0

Azure AD B2Cに接続するADALを使用してOpenID Connect認証で.NET Core 2.0 WebアプリケーションがなぜAzure AD B2Cテナントの設定と通信しないのかを調べようとしています。 、最も重要なのはサインインポリシーです。私のアプリはthisと非常によく似ていますが、私はAzure AD Graphを使用しています。Azure AD B2Cテナントポリシーを登録済みのアプリケーションに接続する

AuthenticationContextのための私の「権威」はこのため https://login.microsoftonline.com/organizationname.onmicrosoft.com

で、ユーザーは、Microsoftアカウントまたは私は彼の個人的なテナントアカウントでログインするユーザーが欲しいテナントドメインとメールでログインすることを余儀なくされます。ポリシーが自動的に適用されるべきではありませんか?私はここで重要な何かを逃しているように感じる。

アプリはAzureの登録アプリにあり、必要なすべての権限を持っています。

基本的には、そのテナントから自分のアプリケーションの認証システムにポリシーを接続する必要があります。そのため、マイクロソフトのアカウントだけでなく、ローカルのテナントアカウントも受け入れます。

さらに簡単な言葉で言えば:どのように私は赤い円の部分をURLに追加するのですか?

enter image description here

答えて

3

あなたは、参照サンプルは、正規のAzure ADのためです。

this sample for Azure AD B2C with .Net Core 2.0、特にOpenIdConnectOptionsSetup.csおよびAzureAdB2COptions.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"; 
    
  • あなたのトークン償還、ADALないためMSALを使用する必要があります。

    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 Graphに接続することはできず、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)を参照してください。 Graphic API操作のアプリケーショントークン(ユーザートークンと比較して)を取得するには、クライアントの資格情報フローを個別に設定する必要があります。 – Saca

関連する問題