Мы пытаемся настроить провайдера oid c для authZ и authN с istio в нашем кластере k8s. Мы следовали этому примеру здесь: Bookinfo с примером Authservice для интеграции. Ниже приведены подробные сведения о настройке:
OID C поставщик: Keycloak
Тип предоставления: authorization_code
Версия Istio: 1.5
Поток аутентификации:
- По первому запросу, поскольку аутентификация отсутствует,
authservice
успешно перенаправляет на Keycloak, где мы можем успешно войти в систему. - Keycloak затем перенаправляет запрос к приложению на redirect_uri. Код авторизации теперь присутствует в этом URI.
- redirect_uri снова перехватывается authservice, и он обнаруживает, что URL-адрес является URL-адресом фильтра для oid c, как определено в configmap
- Теперь он пытается вызвать keycloak для обмена кода авторизации для токена доступа.
Это этап, на котором authservice завершается ошибкой и выдает ошибку IdP connection error
. Журнал для запроса выглядит следующим образом:
Check: processing request ://microservice.url.com/appservice/oauth/callback?state=LeCNEqfwA6EUFGNGLt7JALx8jCWkPxjn7qCELbqkKrk&session_state=18f0e3b0-bee2-44a5-b049-6e349dbeda49&code=ddea1ea6-5616-416d-8291-c00bce6f2e9b.18f0e3b0-bee2-44a5-b049-6e349dbeda49.af7e7c31-fd4b-4a66-9856-25d1ac305d3f with filter chain idp_filter_chain
20/03/2020 17:27:48 [2020-03-20 11:57:48.546] [console] [trace] New
20/03/2020 17:27:48 [2020-03-20 11:57:48.547] [console] [trace] OidcFilter
20/03/2020 17:27:48 [2020-03-20 11:57:48.548] [console] [trace] Process
20/03/2020 17:27:48 [2020-03-20 11:57:48.548] [console] [debug] Call from @10.42.5.53 to @10.42.5.58
20/03/2020 17:27:48 [2020-03-20 11:57:48.549] [console] [trace] MatchesCallbackRequest: checking handler for ://microservice.url.com/appservice/oauth/callback?state=LeCNEqfwA6EUFGNGLt7JALx8jCWkPxjn7qCELbqkKrk&session_state=18f0e3b0-bee2-44a5-b049-6e349dbeda49&code=ddea1ea6-5616-416d-8291-c00bce6f2e9b.18f0e3b0-bee2-44a5-b049-6e349dbeda49.af7e7c31-fd4b-4a66-9856-25d1ac305d3f
20/03/2020 17:27:48 [2020-03-20 11:57:48.549] [console] [trace] RetrieveToken
20/03/2020 17:27:48 [2020-03-20 11:57:48.550] [console] [trace] Post
20/03/2020 17:27:48 [2020-03-20 11:57:48.618] [console] [info] Post: HTTP error encountered: stream truncated
20/03/2020 17:27:48 [2020-03-20 11:57:48.618] [console] [info] RetrieveToken: HTTP error encountered: IdP connection error
20/03/2020 17:27:48 [2020-03-20 11:57:48.618] [console] [trace] Request processing complete
20/03/2020 17:27:48 [2020-03-20 11:57:48.619] [console] [trace] Processing completion and deleting state
При дальнейшей проверке кода я обнаружил, что эта ошибка вызывается здесь: oid Authservice c filter - Github
Чтобы исключить проблемы с конфигурацией, я использовал OpenID Debugger , чтобы вручную сгенерировать код авторизации, а затем вызвал api, чтобы обменять его на токен api. Я был в состоянии успешно восстановить его, не было никаких проблем с этим. Но почему-то это не работает с authservice.
Может быть, что-то не так с моей стороны? Кто-нибудь сталкивался с этой проблемой раньше? Любая помощь приветствуется. Дайте мне знать, если понадобится больше деталей.