У нас есть ферма Windows 2016 ADFS 4.0 (база данных WID, а не SQL Server), размещенная в Azure.
Мы работаем с новым приложением OpenID Connect и хотим использовать ADFS для аутентификации и заполнения профилей пользователей из AD. Приложение использует общий секрет для конфигурации JWT.
Это было очень легко настроить в нашей тестовой среде (ферма с одним узлом).
Когда мы настроили тот же сервер приложений на нашем производственном сервере ADFS, мы сначала добились успеха, но после входа в систему мы начали периодически получать ошибки входа. После входа в ADFS вы будете перенаправлены на URL-адрес обратного вызова. Это перенаправляет вас на страницу входа, и на этой странице находится модальное диалоговое окно с этим сообщением об ошибке: Call to IdP failed to get identity
Если мы нажмем «Обновить» несколько раз, в конечном итоге приложение позволит нам войти в приложение. Когда мы запустили трассировку скрипта на плохом соединении, мы обнаружили эту ошибку:
{"errorCodeString":"camAuthUnrecoverable",
"messages":[{"messageString":"Call to IdP failed to get identity. Status 400\nError: invalid_grant\nError description: MSIS9612: The authorization code received in 'code' parameter is invalid. "}],
"promptInfo":{"captions":["Call to IdP failed to get identity"]}}
Я обнаружил ошибки в средстве просмотра событий ADFS с таким сообщением:
Encountered error during OAuth token request.
Additional Data
Exception details:
Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthAccessTokenInvalidAuthorizationCodeException:
MSIS9252: The authorization code received is invalid.
No artifact found for the specified authorization code: '//redacted//'.
The cause may be that artifact has timed out, or the authorization code was replayed, or the authorization code is invalid.
at Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthToken.OAuthTokenProtocolHandler.RedeemAccessToken(OAuthAccessTokenRequestContext tokenContext)
В каждом случае мы могли войти в систему после того, как несколько раз нажали кнопку перезагрузки.
Когда мы уменьшили количество узлов в ферме до 1, проблема исчезла и появилась снова, когда мы повторно добавили узлы.
Сталкивались ли другие с этой проблемой при настройке приложений openid connect / oAuth2? Как вы это решили?
Хотя разрешение артефактов SAML2 не поддерживается в ADFS 4.0 с использованием WID, нет ничего, что говорило бы о том, что та же проблема относится к OpenID Connect, хотя это мое единственное предположение относительно проблемы. Стоит ли тратиться на преобразование ADFS для использования кластера SQL Server?