0

Azure AD B2C에 연결하는 ADAL을 사용하여 OpenID Connect 인증을 사용하는 .NET Core 2.0 웹 응용 프로그램이 Azure AD B2C 테넌트 구성과 통신하지 않는 이유를 찾으려고합니다. 가장 중요한 것은 로그인 정책입니다. 내 응용 프로그램은 Azure AD Graph를 사용하는 것을 제외하고는 this과 매우 비슷합니다.Azure AD B2C 테넌트 정책을 등록 된 앱에 연결

AuthenticationContext에 대한 나의 "권한"이 때문에 https://login.microsoftonline.com/organizationname.onmicrosoft.com

이며, 사용자가 Microsoft 계정 또는 내가 그의 개인 세입자 계정으로 로그인 할 수있는 사용자를 원하는 세입자 도메인과 메일로 로그인 강제로 . 정책이 자동으로 적용되어서는 안됩니까? 나는 여기서 중요한 무엇인가 놓칠 수있는 것처럼 느낀다.

앱이 Azure의 등록 된 앱에 앉아 있고 필요한 모든 권한을 가지고 있습니다.

기본적으로 세입자의 정책을 내 앱의 인증 시스템에 연결해야하므로 Microsoft의 정책뿐만 아니라 로컬 테넌트 계정을 사용할 수 있습니다.

또는 더 간단한 단어로 입력 : 어떻게하면 URL에 빨간색 원으로 부품을 추가 할 수 있습니까?

enter image description here

답변

3

당신이 참조 된 샘플은 일반 푸른 AD입니다.

특히 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"; 
    
  • 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 할 수 있도록 전환하지 않을까요? 한 번에 많은 수의 로컬 계정을 추가 할 수있는 옵션이 내 응용 프로그램의 핵심입니다. –

+0

내가 틀렸다면 고쳐주세요. 그러나 Microsoft Graph를 사용하는 경우 Azure Graph에 연결할 수는 없으며 Microsoft Graph에만 연결할 수 있습니다. 그리고 Microsoft Graph를 사용하여 B2C 거주자에게 로컬 계정을 추가 할 수 없습니다. –

+0

Azure AD B2C 토큰은 Graph (Microsoft 또는 Azure AD)에 사용할 수 없습니다. [이 링크] (https://stackoverflow.com/questions/44474803/manage-user-from-azure-ad 참조)를 참조하십시오. -b2c-using-ad-graph-api-secure-access/44597650 # 44597650) 자세한 내용은 그래프 API 작업을 위해 응용 프로그램 토큰 (대 사용자 토큰)을 얻기 위해 별도로 클라이언트 자격 증명 흐름을 설정해야합니다. – Saca