在 Azure AD B2C(隐式流)中获取令牌时出现 CORS 问题

CORS issue when getting a token in Azure AD B2C (Implict Flow)

我们正在尝试使用隐式流通过 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) the app then needs to perform a xhr POST request to the token endpoint to retrieve a token for a resource (web api) the app needs to interact with. However, when I try and do an XHR POST to that token endpoint (https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token?p=b2c_1_signinpolicy) 浏览器(非常正确地)执行预检检查(OPTIONS 调用)以确定如果它可以调用位于不同域中的端点。 OPTION 调用有效,但它不包含浏览器允许对端点进行 POST 调用所需的 headers (Access-Control-Allow-Origin)。

我是漏了什么还是做错了什么?

感谢任何帮助!

乔恩

A​​zure AD 身份验证端点(B2C 或其他)不支持 CORS,将来也不会。

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

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

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