我有一个auth service
检查 jwt 令牌的有效性req.headers.Authorization
,并且我有另一个 API 服务来为customer
实体执行 CRUD 操作,这将需要对所述 API 服务的每个请求都使用有效的 JWT。而这一切都被包裹在了里面kubernetes cluster + istio
。我目前正在做的是这样的
- 客户端请求
POST /customer
使用 JWT 作为headers.Authorization
- 然后后端的
POST /customer
API 服务将auth service
通过传递 JWT 来检查其有效性 - 如果它无效,则返回一些令牌错误响应
- 如果有效,则进行创建客户操作,并将数据存入数据库
虽然这工作正常,但我发现我auth checks
在每个端点上重复这个,我当然可以在同一个服务上设置一个中间件,通过在传入请求到达controller
.
我想知道是否有可能实现这种middleware
方法,istio
而不是把它写在服务本身上。
我想达到什么
- 客户端请求
POST /customer
使用 JWT 作为headers.Authorization
- 将
istio sidecar(?)/ingress gateway
捕获此请求,并将其发送(重定向)到身份验证服务以首先检查,然后再将其传递到其目的地 - 如果它无效,则返回一些令牌错误响应
- 如果有效,则将其传递到其原始目的地
istio 能做到这一点吗?我已经阅读了关于Authorization的 istio 文档,但我认为它没有解释我想要在这里实现的目标