使用 B2C 租户域时未经授权使用 Azure AD B2C returns 保护的 Azure 函数

Azure functions secured with Azure AD B2C returns unauthorized when using B2C tenant domain

鉴于 https://login.microsoftonline.com/tfp/MyTenantName.onmicrosoft.com/signinsingunp 作为发行者 url 通过 AAD B2C 保护的 azure 功能,我可以通过 msal.js 应用程序成功验证 b2c 用户, 好像我尝试将发行者 url 更新为我的 b2ctenant 域登录名 url(因为这个建议 redirect URLs to b2clogin.com)并更新 msal.js 应用程序中的权限以匹配域(myapp. b2clogin.com/tfp/MyTenantName.onmicrosoft.com/signinsingunp),我收到 401 相同的 azure 函数,任何建议将不胜感激。

下面是详细的设置细节,

提前致谢!

您需要做的就是更改 Issuer URL(您写为 Issuer URL 但必须是 .well-known 配置 URL)以匹配 b2clogin.com 域。

从上面我看到你在 Azure 函数中的 OpenID 配置 URL 是

login.microsoftonline.com/......./opendid......

但它应该与您的b2clogin 域的静态网站的.well-known 配置相匹配。应该是

https://tenantname.b2clogin.com/tfp/tenantname.onmicrosoft.com/B2C_1_Policy/v2.0/.well-known/openid-configuration

我终于找到了解决办法...

费了一番功夫,就这样了issue raised on GitHub

基本上,我在设置 UserAgentApplication 时更改了权限,以使用其他人提到的新 b2clogin.com 域。 虽然这并没有立即起作用,但我收到了您在评论中提到的相同错误,所以我不得不在我的配置中设置 validateAuthority: false

我在下面提供了一个示例,说明我是如何设置我的。我的 ClientID 在 Azure 中与在 MSAL.js

中相同
var msalConfig = {
      auth: {
        clientId: "xxxx",
        authority: "https://xxxx.b2clogin.com/tfp/xxxx.onmicrosoft.com/B2C_xxxx", 
        webApi: 'https://xxxx.azurewebsites.net',
        b2cScopes: this.appConfig.b2cScopes,
        validateAuthority: false
      },
      cache: {
        cacheLocation: "localStorage",
        storeAuthStateInCookie: true
      }
    };
this.clientApplication = new Msal.UserAgentApplication(msalConfig);

希望对您有所帮助!