0

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

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

虽然这工作正常,但我发现我auth checks在每个端点上重复这个,我当然可以在同一个服务上设置一个中间件,通过在传入请求到达controller.

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

我想达到什么

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

istio 能做到这一点吗?我已经阅读了关于Authorization的 istio 文档,但我认为它没有解释我想要在这里实现的目标

4

2 回答 2

1

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

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

于 2021-05-16T06:57:23.053 回答
0

我相信,您想要实现的目标可以通过request routing实现。基本上,基于标头聊天请求,并将其路由到服务。

于 2021-05-17T13:59:57.537 回答