使用Azure AD B2C保护的Azure功能在使用B2C租户域时返回未授权

问题描述 投票:1回答:2

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

以下是详细的设置细节,

提前致谢!

azure azure-functions azure-ad-b2c msal msal.js
2个回答
2
投票

我终于找到了解决方案......

这需要大量的淘汰,但这取决于这个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);

希望这可以帮助!


0
投票

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

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

login.Microsoft online.com/......./open的ID......

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

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

© www.soinside.com 2019 - 2024. All rights reserved.