【问题标题】:CORS issue when getting a token in Azure AD B2C (Implict Flow)在 Azure AD B2C(隐式流)中获取令牌时出现 CORS 问题
【发布时间】:2016-03-16 00:01:34
【问题描述】:

我们正在尝试通过使用隐式流的 Web 应用实现 Azure AD B2C 身份验证。我们可以登录并成功重定向到正确的 url,其中包括重定向 url (id_token&code) 上的正确项目。但是,正如本文所建议的 (https://github.com/Azure/azure-content/blob/master/articles/active-directory-b2c/active-directory-b2c-reference-oidc.md#get-a-token) 应用程序需要向令牌端点执行 xhr POST 请求,以检索应用程序需要与之交互的资源 (web api) 的令牌。但是,当我尝试对该令牌端点(https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token?p=b2c_1_signinpolicy)执行 XHR POST 时,浏览器(非常正确)执行预检检查(OPTIONS 调用)以确定它是否可以调用端点,因为它在不同的域中。 OPTION 调用有效,但它不包含浏览器允许对端点进行 POST 调用所需的标头 (Access-Control-Allow-Origin)。

我是否遗漏了什么或做错了什么?

任何帮助表示赞赏!

乔恩

【问题讨论】:

标签: javascript azure openid azure-active-directory azure-ad-b2c


【解决方案1】:

Azure AD 身份验证终结点(B2C 或其他)不支持 CORS,也永远不会支持。

对于 Javascript 应用程序,我们使用带有 response_type=tokenresponse_type=id_token 的隐式流直接从授权端点获取令牌 - 无需 CORS。随意尝试一下,它应该工作得很好。

我们之所以说现在不支持 Javascript 应用程序是因为一小时后,您使用此方法获得的 id_token/access_token 将过期。而且我们没有办法静默刷新/获取新令牌。这意味着在最好的情况下,您的 Javascript 应用程序必须每小时重定向到 AAD。

我们认为这是不可接受的,因此我们正在开发一项可以解决此问题的功能。但现在我们将继续称 Javascript 应用程序不受支持。

【讨论】:

  • 感谢您的回复 - 我们意识到我们的 C# 代码有点错误,所以现在一切正常。
  • 是否有任何更新,我正在经历同样的问题并面临飞行前跨域问题。
  • 如果您在基于浏览器的应用程序中使用 PKCE 授权代码授予(这是本回复时的 BCP 草案 - 请参阅 tools.ietf.org/html/draft-ietf-oauth-browser-based-apps-04),该怎么办?我不需要在这种情况下使用令牌端点吗?
  • @dstrockis 现在 javascript 应用程序 / SPA 的最佳实践是在隐式流上使用 PKCE 的授权代码,这方面有什么进展吗?
  • 这个 github 问题与使用 PKCE 实现授权代码有关。包括 CORS 更新 -> github.com/AzureAD/microsoft-authentication-library-for-js/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-21
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 2023-03-11
  • 2018-04-26
相关资源
最近更新 更多