Назад | Перейти на главную страницу

Прерывистая ошибка входа в OpenID Connect в ADFS 4.0

У нас есть ферма 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?