我想通过 Istio 为 GRPC 服务设置身份验证策略。
目前,可以在常规 HTTP 服务上添加策略,因为您可以使用Authorization
标头将 JWT 令牌传递给服务。我有点迷茫,因为它似乎不是 GRPC 服务的类似策略(您可以在请求的元数据中包含令牌)。
有没有人设法将身份验证策略添加到 Istio 管理的 GRPC 服务?
我想通过 Istio 为 GRPC 服务设置身份验证策略。
目前,可以在常规 HTTP 服务上添加策略,因为您可以使用Authorization
标头将 JWT 令牌传递给服务。我有点迷茫,因为它似乎不是 GRPC 服务的类似策略(您可以在请求的元数据中包含令牌)。
有没有人设法将身份验证策略添加到 Istio 管理的 GRPC 服务?
如果你使用JSON-to-GRPC 网关作为istio ingress和grpc service之间的中间件,你可以为你实现Authorization
Header 解析。md['authorization']
JSON-to-GRPC Gateway
源代码行被HTTP Header
Authorization
解析并附加到将成为元数据的对:
for key, vals := range req.Header {
for _, val := range vals {
if key == "Authorization" {
pairs = append(pairs, "authorization", val)
continue
}
PS.:如果有办法在istio本身中使用自定义中间件功能,您可以复制grpc-gateway
逻辑以实现相同的行为。
稍后可以通过以下方式在grpc -servicecontext
中访问:
// retrieve metadata from context
md, ok := metadata.FromContext(ctx)
md["authorization"]