我们在K8中部署了服务,使用istio作为服务网格,并使用Ingress nginx公开。
现在,我们想使用Ingress nginx Ingress控制器添加AuthN和AuthZ。
- 我们想做Oauth2 OpenID。这可以使用oauth2代理进行传递单元返回的jwt令牌具有用户的UUID,但不是他的小组
- 我们有k8s服务,它有用户UUID和组的映射(后端发电机数据库(。所以我们需要检索用户组
- 我们有基于OPA(开放策略代理(的针对用户组的服务API的AuthZ规则。因此,服务API必须根据用户组进行验证
- 一旦AuthN和AuthZ成功,http头对于用户UUID,userGroup应该传递给上游服务
- 此外,我们还需要为客户端应用程序设置带有用户UUID和用户组的cookie
所有上述5个步骤都可以使用"Ingress nginx"分块执行。但是,不是作为代理链在一起。有没有办法在"Ingress nginx"入口控制器中实现这些功能?我正在寻找开源入口控制器。
谢谢。
谨致问候,Prakash
我不能100%确定,但你不能使用ingress nginx,我尝试过,但失败了,因为nginx不会给你太多灵活性加上它的代理服务。
我建议您检查一下Kong API网关,或者您也可以将其用作入口控制器,而且它也是开源的。你可以使用开源插件,也可以在不做任何更改的情况下使用这些插件。
使用Kong插件,可以轻松设置AuthZ和AuthN。
在这里你可以参考我在Authz&AuthN与孔,密钥斗篷:https://faun.pub/kong-jwt-scope-base-auth-with-keycloak-b9938a96d281
Apifix网关建议支持身份验证和K8S部署https://apisix.apache.org/