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

相關問題