Azure AD B2C CORS 错误

Posted

技术标签:

【中文标题】Azure AD B2C CORS 错误【英文标题】:Azure AD B2C CORS errors 【发布时间】:2020-10-09 23:10:51 【问题描述】:

我正在尝试运行示例

https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp

第 1 部分工作正常。我正在使用我自己的 Azure AD B2C 尝试第 II 部分。

我用我的注册用户流程中的 URL 更新了 policies.js 文件,用我的应用程序 ID 更新了 authconfig.js

const b2cPolicies = 
    names: 
        signUpSignIn: "B2C_1_sign_up_sign_in",
    ,
    authorities: 
        signUpSignIn: 
            authority: "https://zzz.b2clogin.com/zzz.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_sign_up_sign_in",
        

但是我得到一个 CORS 错误:

Access to XMLHttpRequest at 
https://zzz.b2clogin.com/zzz.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_sign_up_sign_in/v2.0/.well-known/openid-configuration' from origin 'http://localhost:6420' 
has been blocked by CORS policy: 
No 'Access-Control-Allow-Origin' header is present on the requested resource.

该示例显然希望按照说明从 localhost 运行。我的配置中是否缺少任何内容?有什么想法吗?

它生成双 ./wellknown 的事实令人怀疑,但我不知道如何设置 msalConfig。

更新:我已经尝试删除 .wellknown 部分的 url,但它仍然不起作用。该请求看起来更好,因为它没有重复的 .wellknown 位,但它没有我认为必不可少的 p=B2C_1_sign_up_sign_in。

【问题讨论】:

您的 MSAL 配置很可能是错误的,因为构造的 URL 是错误的。你能展示一下它的样子吗? @juunas 见上文,我从“运行用户流程”对话框中复制了它。 【参考方案1】:

注意样本中的权限定义为:

signUpSignIn: 
    authority: "https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_susi",
,

所以你应该将权限定义为:

https://zzz.b2clogin.com/zzz.onmicrosoft.com/B2C_1_sign_up_sign_in

【讨论】:

很好看。它应该可以从用户流程中复制和粘贴。【参考方案2】:

我注意到授权端点以小写形式返回带有 b2c_1 的策略,即使在 Azure 策略创建中它以大写为前缀。

https://zzz.b2clogin.com/zzz.onmicrosoft.com/B2C_1_sign_up_sign_in

【讨论】:

以上是关于Azure AD B2C CORS 错误的主要内容,如果未能解决你的问题,请参考以下文章

Azure AD B2C 登录 - “包含阻止加载的脚本错误”

访问被 Azure AD B2C 锁定的 Azure 函数应用时收到 403 错误

Azure AD B2C 错误 - IDX10501:签名验证失败

在 Postman 中为 Azure AD B2C 请求访问令牌

CORS错误Azure函数与B2C-Blazor

Azure AD B2C:客户在兑换机密授权时必须发送 client_secret