Проверка подлинности конечного пользователя Istio с помощью JWT в службе GRPC - PullRequest
0 голосов
/ 27 августа 2018

Я бы хотел установить политику аутентификации для службы GRPC через Istio.

В настоящее время можно добавить политику для обычных служб HTTP, так как вы можете использовать *Заголовок 1005 * для передачи токена JWT в службу.Я немного растерялся, поскольку похоже, что подобная политика для сервисов GRPC отсутствует (где вы можете включить токен в метаданные запроса).

Кто-нибудь управлялдобавить политику аутентификации в службу GRPC, управляемую Istio?

1 Ответ

0 голосов
/ 05 ноября 2018

Вы можете получить Authorization Заголовок, проанализированный для md['authorization'], для вас, если вы используете JSON-to-GRPC Gateway в качестве промежуточного программного обеспечения между istio ingress и grpc service .

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-service через context, например:

// retrieve metadata from context
md, ok := metadata.FromContext(ctx)

md["authorization"]
...