0

我正在运行一个基于微服务的应用程序,其中包含许多基本服务和一个使用 IdentityServer4 的 Oauth 令牌服务。我想直接从入口控制器使用身份服务进行令牌自省,我相信这似乎是受支持的(https://kubernetes.github.io/ingress-nginx/examples/auth/oauth-external-auth/ ) - 然后根据用户在各种服务中的应用层角色检查用户是否被允许访问。

我的自省响应中有有价值的信息,我希望在内省完成后从我的入口控制器传递给我的不同服务(角色、用户名、电子邮件等)。在 ingress-nginx 中使用 oauth 的文档非常缺乏。我想知道是否有人知道这是否受支持,如果支持,我将如何实施它。

4

1 回答 1

1

我最近对 ​​NGINX 和 Kong 进行了同样的研究,得出了这样的结论:

  • 首先使用通用入口/负载均衡器
  • 后跟特定路由的反向代理/API 网关
  • 其次是实际的后端 API

您可以随意自定义第二层,例如自定义 nginx.conf 文件并添加 LUA 插件。

但是第一层倾向于使用自己的 nginx 模板,这些模板与默认模板非常不同。每当您公开一个新的 Kubernetes 服务时,都会启动一个新的入口模板实例。实际上,入口是与反向代理不同的服务器角色,并不意味着以相同的方式进行定制。

在 Curity,我们做了很多与 OAuth 相关的工作,我建议您通过以下方式实现您的目标:

  • 不理会入口
  • 在入口之后在反向代理层中进行自省,以便您可以通过 LUA 脚本添加自省(和任何其他)逻辑。OpenResty 和 Kong Open Source 都是不错的选择。
  • 我们称之为幻象令牌模式
  • 这是您可以插入的示例LUA 实现- 请注意,结果缓存是确保良好性能的解决方案的重要组成部分
于 2021-09-20T14:10:45.397 回答