10

我们正在尝试通过使用隐式流的 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)。

我错过了什么或做错了什么?

任何帮助表示赞赏!

乔恩

4

1 回答 1

6

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

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

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

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

于 2015-12-10T16:01:50.890 回答