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

时间:2019-03-14 03:23:06

标签: azure azure-functions azure-ad-b2c msal msal.js

鉴于通过https://login.microsoftonline.com/tfp/MyTenantName.onmicrosoft.com/signinsingunp作为发布者网址通过AAD B2C保护的天蓝色功能,我可以通过msal.js应用成功验证b2c用户, 好像我尝试将发布者URL更新为我的b2ctenant域登录URL(由于此建议redirect URLs to b2clogin.com)并更新msal.js应用程序中的权限以匹配域(myapp.b2clogin.com/tfp/MyTenantName.onmicrosoft)。 com / signinsingunp),我收到相同的Azure功能401,请多多指教。

下面是详细的设置详细信息,

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要做的就是更改Issuer URL(您写为Issuer URL,但必须是.well-known config 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

答案 1 :(得分:0)

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

花了很多时间进行搜索,但这取决于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);

希望这会有所帮助!