【问题标题】:Kubernetes with Istio: Authenticate with External Oauth ServiceKubernetes 与 Istio:使用外部 Oauth 服务进行身份验证
【发布时间】:2020-04-21 06:17:51
【问题描述】:

我正在寻找一种方法来使用外部 Oauth2 提供程序对支持 Istio 的 Kubernetes 集群进行身份验证。 Nginx Ingress 控制器在使用普通 Ingres 资源时有办法做到这一点。

https://kubernetes.github.io/ingress-nginx/examples/auth/oauth-external-auth/

但是,我不确定如何使用 Istio Gateway 和 VirtualService 对象来做到这一点。基本上,我需要能够向 Istio 提供一个 auth-url 和一个 auth-sigin url,因此它将以与 oauth Nginx 入口控制器相同的方式进行身份验证。我发现了一些 EnvoyFilters 的示例,提出了执行此操作的方法,但没有很多文档说明如何进行此操作。

任何让 Istio 与外部 Oauth 集成的建议都将不胜感激。

【问题讨论】:

  • 只是一个想法..您可以在没有 istio 提供的入口网关的情况下使用 istio,并使用 Nginx 作为入口
  • 感谢@ArghyaSadhu 对此的建议。你知道我可以如何做到这一点的任何资源吗?此外,我对 Istio 的用例是我可以使用 DestinationRules 引导流量。如果使用 Nginx Ingress,这仍然可能吗?

标签: kubernetes oauth oauth-2.0 istio


【解决方案1】:

OriginAuthenticationMethod 是您要查找的身份验证策略。

参考:https://istio.io/docs/reference/config/security/istio.authentication.v1alpha1/#OriginAuthenticationMethod

目前,源站认证仅支持 JWT。

一种解决方法是使用另一种类型的 Ingress。

【讨论】:

  • 感谢您的评论@tummala-dhanvi。使用 JWT 方法,我的理解是每个 Web 请求都需要包含一个可以通过验证的 JWT 令牌。但是,我想知道这将如何与通常由网络浏览器访问的一堆网络服务一起工作?这是否意味着访问者需要安装浏览器插件才能在每个请求中注入 JWT 令牌?关于其他类型的入口方法,如果你知道如何将 Istio DestinationRules 与 Nginx Ingress 集成,我真的很想听听。
  • JWT 对最终用户注入它(客户端)没有意义,它应该由您的前端服务处理。 (例如 javascript express)
  • 感谢您澄清这一点。我希望不需要通过 javascript 注入一些东西,但我知道这是目前唯一的选择。作为更新,我很幸运地在 Istio 网关前面安装了一个 EnvoyFilter 来解决这个问题,但这需要学习 Lua。 (不是即插即用 :-)
  • 你知道是否可以将 JWT 令牌与 cookie 一起使用而不是 Authorization 标头吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2021-07-26
  • 2019-01-28
  • 2010-10-21
  • 1970-01-01
  • 2011-11-27
  • 2016-10-31
  • 1970-01-01
相关资源
最近更新 更多