0

我想了解为什么使用连接到Azure AD B2C的ADAL的OpenID Connect身份验证的.NET Core 2.0 Web应用程序不会与我的Azure AD B2C租户配置,最重要的是政策的签署。我的应用与this非常相似,只是我使用了Azure AD Graph。将Azure AD B2C租户策略连接到已注册的应用程序

我的“权限”为AuthenticationContexthttps://login.microsoftonline.com/organizationname.onmicrosoft.com

由于这个原因,用户被强制使用Microsoft帐户或租户域,邮件,我想用户用他的个人账户租户登陆登陆。不应该自动应用这些策略吗?我觉得我可能会错过这里重要的东西。

该应用程序位于Azure的注册应用程序中,并具有所需的所有权限。

我基本上需要将来自该租户的策略连接到我的应用程序的身份验证系统,以便它接受本地租户帐户,而不仅仅是来自Microsoft的那些帐户。

或者把它放在更简单的单词中:如何将红圈中的部分添加到url?

enter image description here

回答

3

您参考的样本是定期Azure的AD。

结账this sample for Azure AD B2C with .Net Core 2.0,特别是OpenIdConnectOptionsSetup.csAzureAdB2COptions.cs

关键的事情要记住:

  • 权威的格式如下:https://login.microsoftonline.com/tfp/<yourtenant.onmicrosoft.com>/<default_policy>/v2.0虽然我引用的样本构建这个自动为您。通过使用该权限,OWIN中间件和MSAL将自动从元数据端点获取参数?policy=b2c_1_x

    public AzureAdB2COptions() 
    { 
        AzureAdB2CInstance = "https://login.microsoftonline.com/tfp"; 
    } 
    //...other init code 
    public string Authority => $"{AzureAdB2CInstance}/{Tenant}/{DefaultPolicy}/v2.0"; 
    
  • 您应该使用MSAL进行令牌兑换,而不是ADAL。

    public async Task OnAuthorizationCodeReceived(AuthorizationCodeReceivedContext context) 
    { 
        var code = context.ProtocolMessage.Code; 
    
        string signedInUserID = context.Principal.FindFirst(ClaimTypes.NameIdentifier).Value; 
        TokenCache userTokenCache = new MSALSessionCache(signedInUserID, context.HttpContext).GetMsalCacheInstance(); 
        ConfidentialClientApplication cca = new ConfidentialClientApplication(AzureAdB2COptions.ClientId, AzureAdB2COptions.Authority, AzureAdB2COptions.RedirectUri, new ClientCredential(AzureAdB2COptions.ClientSecret), userTokenCache, null); 
        try 
        { 
         AuthenticationResult result = await cca.AcquireTokenByAuthorizationCodeAsync(code, AzureAdB2COptions.ApiScopes.Split(' ')); 
         context.HandleCodeRedemption(result.AccessToken, result.IdToken); 
        } 
        catch (Exception ex) 
        { 
         //Handle 
        } 
    } 
    
+0

嗯,不会切换到MSAL使使用Azure的图形是不可能的,但?一次添加大量本地帐户的选项是我的应用程序的核心。 –

+0

如果我错了,请更正我的错误,但如果使用MSAL,则无法连接到Azure图形,只能连接到Microsoft Graph。而且您无法使用Microsoft Graph将本地帐户添加到您的B2C租户。 –

+0

不完全是,Azure AD B2C令牌不能用于任何图形(Microsoft或Azure AD) - 请参阅[此链接](https://stackoverflow.com/questions/44474803/manage-user-from-azure-ad -b2c-using-ad-graph-api-secure-access/44597650#44597650)了解更多信息。您需要单独设置客户端凭据流以获取用于Graph API操作的应用程序令牌(与用户令牌)。 – Saca

相关问题