3

我想通过 Istio 为 GRPC 服务设置身份验证策略

目前,可以在常规 HTTP 服务上添加策略,因为您可以使用Authorization标头将 JWT 令牌传递给服务。我有点迷茫,因为它似乎不是 GRPC 服务的类似策略(您可以在请求的元数据中包含令牌)。

有没有人设法将身份验证策略添加到 Istio 管理的 GRPC 服务?

4

1 回答 1

0

如果你使用JSON-to-GRPC 网关作为istio ingressgrpc service之间的中间件,你可以为你实现AuthorizationHeader 解析。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"]
于 2018-11-04T21:04:29.173 回答