带有 Api 网关的 Keycloak

问题描述 投票:0回答:1

我已经完成了 Keycloak 配置,以使用凭据以及 Google OAuth 进行注册/登录。现在我想将我的 Keycloak 隐藏在 Api Gateway 后面,这样外部的人甚至不会知道我正在使用 keycloak 进行身份验证和授权。 我想象我的 UI(我稍后将提供)将简单地将请求发送到相应的 api 网关端点,以便登录/注册或触发 OAuth 登录过程。

然而,我在这里遇到了一个问题,显然没有人在互联网上遵循这种方法,并且使用 keycloak 配置我的 api 网关感觉像是一种过度设计。

我找不到任何合适的教程,人们可以在 api 网关后面隐藏 keycloak 功能。我一直想象 Facebook、Linkedin 甚至 Stack Overflow 等公司都遵循这种方法,他们有一些 api 网关,后面有 keycloak。

很难找到任何关于如何通过 http 请求 keycloak 使用凭据/OAuth 登录/注册的有价值的信息,到处都是“只需使用 keycloak UI!”的方法。这让我已经多次重新考虑编写自己的身份验证服务......

有人能真正向我解释一下完全支持 api 网关和 keycloak 的方法是否有意义吗? Facebook/Linkedin/StackOverflow 等公司如何使用凭证和 OAuth 处理登录/注册流程?我应该编写自己的身份验证服务,还是在 api-gateway 和 keycloak 之间编写一些代理?

任何有关如何实施此类事情的建议都会有所帮助!

谢谢!

authentication authorization microservices keycloak api-gateway
1个回答
0
投票

我们正在为现有平台创建一个新的 K8s 集群,以对最佳实践进行各种改进并删除定制的内置工具。到目前为止,这已经很成功,但一个定制的解决方案是一组 LUA 代码,它将未经身份验证的用户重定向到我们的登录页面。

由于我们的服务是一个“系统的系统”,我们有各种 API 和 Keycloak 登录服务。当前发生的情况是,如果未经身份验证的用户尝试访问任何端点,则会将其转发到 keycloak 服务。

我们希望通过 Cilium(NetworkPolicies 或 EnvoyConfig)我们可以重新创建这个解决方案。想要实现这一点的第一步是应用 OAuth 身份验证的 EnvoyConfig(与您的情况类似,因为它位于我们的 Cilium 网关后面)。然而,即使点击下面的链接也出现了很多问题。

我还没有解决方案,只是分享其他人也遇到的问题,以及一些有用的链接。如果我们发现任何问题,我们会通知您。

Envoy 代理 OAuth(用于 cilium envoy 代理),https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/oauth2_filter#notes

Cilium Envoy 配置示例 https://github.com/cilium/cilium/blob/main/examples/kubernetes/servicemesh/envoy/envoy-prometheus-metrics-listener.yaml

Cilium L7 示例/教程 https://docs.cilium.io/en/stable/network/servicemesh/envoy-custom-listener/

© www.soinside.com 2019 - 2024. All rights reserved.