【问题标题】:KeyCloak Integration with Azure ADB2C - Missing State ParameterKeyCloak 与 Azure ADB2C 集成 - 缺少状态参数
【发布时间】:2023-03-24 16:14:01
【问题描述】:

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

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

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

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

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

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

谢谢。

【问题讨论】:

  • 在 AAD B2C 忘记密码端点的请求 URL 中,Keycloak 是否传递了 state 参数?
  • 是的,从 keycloak 到 B2C 的请求 url 中有一个状态参数。
  • 嗨,贾斯·苏瑞。只是想检查是否有任何替代方法可以从 ADB2C 或 Keycloak 处理这种情况。谢谢!
  • 如果您发送一个状态参数,B2C 应该始终将其传递回去。仔细检查网络跟踪以了解发生了什么。

标签: keycloak azure-ad-b2c azure-ad-b2c-custom-policy keycloak-connect aad-b2c


【解决方案1】:

• 客户端使用“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,因此可能缺少 state 参数。

请参阅以下有关 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

【讨论】:

  • 您好@CloudSpace03,如果我的回答对您有帮助,您可以投票并接受它作为答案(点击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢。
猜你喜欢
  • 2021-12-14
  • 2019-05-16
  • 1970-01-01
  • 2018-10-15
  • 2021-11-19
  • 2019-12-19
  • 2021-08-28
  • 2019-10-05
  • 2021-01-10
相关资源
最近更新 更多