我们在Azure中有一个Windows2016ADFS4.0场(WID数据库,而不是Server)。
我们正在使用一个新的OpenID连接应用程序,并希望使用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连接/OAuth2应用程序时会遇到这个问题吗?你是怎么解决的?
虽然在使用WID的ADFS4.0中不支持SAML2工件解析,但是没有任何东西说同样的问题适用于OpenID连接,尽管这是我对这个问题的唯一猜测。是否值得将ADFS转换为使用Server集群?
发布于 2022-06-17 13:41:37
如果你:
与大多数SAML连接不同,OIDC直接从IDP检索数据。
ADFS+SQLexpress只共享节点间的配置,因此,如果应用程序试图从不同的场节点检索令牌,而不是通过身份验证的节点,则会失败。
快速的答案是将ADFS从SQLExpress配置切换到Server实现。当我这么做的时候,OIDC一直在工作。
很难获得这方面的文档。我的资料来源已经消失,我会把我的笔记放在网上,并提供一个链接到它,当我有机会。
不再起作用的旧链接:
https://serverfault.com/questions/1001154
复制相似问题