在istio中处理用户授权



我有一个auth service,它检查req.headers.Authorization中jwt令牌的有效性,我有另一个API服务来为customer实体执行CRUD操作,这将需要对所述API服务的每个请求都使用有效的jwt。所有这些都被包裹在kubernetes cluster + istio中。我目前正在做的是像这个

  1. 客户端正在请求POST /customer,JWT为headers.Authorization
  2. 后端的POST /customerAPI服务将通过传递JWT来检查其有效性,从而与auth service进行通信
  3. 如果无效,则返回一些令牌错误响应
  4. 如果有效,则执行创建客户操作,并将数据保存到数据库中

虽然这很好,但我发现我在每个端点上都重复这个auth checks,当然我可以在同一服务上设置一个中间件,通过在传入请求到达controller之前拦截该请求来进行检查。

我想知道是否有可能在istio中实现这种middleware方法,而不是将其写在服务本身上。

我想实现

  1. 客户端正在请求POST /customer,JWT为headers.Authorization
  2. istio sidecar(?)/ingress gateway将捕获此请求,并将其发送(重定向(到身份验证服务以首先进行检查,然后再将其传递到目标
  3. 如果无效,则返回一些令牌错误响应
  4. 如果它有效,则将其传递到原始目的地

istio能做到这一点吗?我已经阅读了关于授权的istio文档,但我不认为它解释了我想在这里实现的事情

在Istio中,使用JWT的最终用户身份验证是绝对可能的。您可能正在寻找这篇文章,它解释了使用Istio进行JWT身份验证和授权。

请参阅https://istio.io/latest/docs/tasks/security/authorization/authz-jwt/

我相信,通过请求路由,您试图实现的目标是可能的。基本上,基于标头聊天请求,并将其路由到服务。

相关内容

  • 没有找到相关文章

最新更新