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

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

本文关键字:问题 CORS B2C AD Azure 获取 令牌      更新时间:2023-09-26

我们正在尝试使用implict流通过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)的令牌。但是,当我尝试对该令牌端点执行XHR POST时(https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token?p=b2c_1_signinpolicy)浏览器(非常正确)执行飞行前检查(OPTIONS调用),以确定是否可以像在不同域上那样调用端点。OPTION调用有效,但它不包含浏览器允许对端点进行POST调用所需的标头(Access Control Allow Origin)。

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

感谢您的帮助!

Jon

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

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

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

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