0

我已将“KeyCloak”(身份代理)与 Azure ADB2C 集成以对用户进行身份验证。

首先将用户ADB2C Login用户流端点与Keycloak集成并测试,绝对没问题。此外,我们将 B2C“忘记密码”用户流端点与 Keycloak 集成,在 B2C 中成功忘记密码完成后,将响应重定向回 keycloak,我们看到来自 Keycloak 屏幕的错误响应为 - “响应中缺少状态参数身份提供者”</p>

在请求 url 中有 Scope、Client_id、State、Response_type、Redirect_URI、nonce。但在 B2C 响应 url 中包含“Client_ID”、response_type、scope 和 redirect_Uri。

到目前为止,无法找到解决此问题的方法。如果有任何方法可以从 ADB2C 或 Key-Cloak 处理此问题,请提出建议。

“ADB2C - 使用 OAuth 标准身份验证协议实现”</p>

Keycloak 错误页面代码:- “身份提供者响应中缺少状态参数”</p>

谢谢你。

4

1 回答 1

0

• 客户端使用'state' 参数来维护请求和回调之间的状态。授权服务器在将用户代理重定向回客户端时包含此值。该参数应该用于防止跨站请求伪造攻击。在您的情况下,keycloak 身份代理服务是授权服务,而 Azure AD B2C 是客户端。

• 由于来自 Azure AD B2C 的响应 URL 中缺少 state 参数,因此可能是 keycloak 身份代理的重定向 URI 或应用程序可能未在 Azure AD B2C 中正确配置,因此 keycloak 会引发错误状态参数丢失。

• 由于缺少 state 参数,Keycloak 可能将此响应视为 CSRF 攻击并因此显示错误,而在 Azure AD B2C 中,与特定 keycloak 页面相关的重定向 URI 可能未正确配置,因此尽管响应达到 keycloak 默认值URI 但不是预期的应用程序集成 URI,因此可能缺少状态参数。

请参阅以下有关 CSRF 和状态参数配置以及 Azure AD B2C 中的重定向 URI 的文档链接:-

https://datatracker.ietf.org/doc/html/rfc6749#section-10.12

https://docs.microsoft.com/en-us/azure/active-directory/develop/reply-url

于 2021-12-10T12:23:17.093 回答