다음을 통해 공유


ID 검증을 위해 Blulink eID-Me를 사용하여 Azure Active Directory B2C 구성

시작하기 전에

Azure AD B2C(Azure Active Directory B2C)에는 애플리케이션과 사용자의 상호 작용을 정의하는 두 가지 방법(미리 정의된 사용자 흐름 또는 구성 가능한 사용자 지정 정책)이 있습니다. 사용자 지정 정책은 복잡한 시나리오를 해결합니다. 대부분의 시나리오에서는 사용자 흐름을 권장합니다. 사용자 흐름 및 사용자 지정 정책 비교를 참조하세요.

eID-Me와 Azure AD B2C 인증 통합

캐나다 시민을 위한 ID 검증 및 분산형 디지털 ID 솔루션인 Bluink eID-Me와 Azure AD B2C 인증을 통합하는 방법을 알아봅니다. eID-Me를 사용하여 Azure AD B2C 테넌트는 사용자 ID를 확인하고 확인된 등록 및 로그인 ID 클레임을 가져옵니다. 통합은 안전한 디지털 ID를 사용한 다단계 인증 및 암호 없는 로그인을 지원합니다. 조직은 IAL(Identity Assurance Level) 2 및 고객 파악(KYC) 요구 사항을 충족할 수 있습니다.

자세히 알아보려면 bluink.ca로 이동합니다. Bluink Ltd

필수 조건

시작하려면 다음이 필요합니다.

자습서: Azure AD B2C에서 사용자 흐름 및 사용자 지정 정책 만들기도 참조하세요.

시나리오 설명

eID-Me는 OIDC(OpenID Connect) ID 공급자로 Azure AD B2C와 통합됩니다. Azure AD B2C에서 eID-Me 솔루션을 구성하는 요소는 다음과 같습니다.

  • Azure AD B2C 테넌트 - eID-Me에서 신뢰 당사자로 구성되면 eID-Me가 등록 및 로그인 시 Azure AD B2C 테넌트를 신뢰할 수 있습니다.
  • Azure AD B2C 테넌트 애플리케이션 - 테넌트에 Azure AD B2C 테넌트 애플리케이션이 필요하다고 가정합니다.
    • 애플리케이션은 트랜잭션 중에 Azure AD B2C에서 수신한 ID 클레임을 받습니다.
  • eID-Me 스마트폰 앱 - Azure AD B2C 테넌트 사용자에게는 iOS 또는 Android용 앱이 필요합니다.
  • 발급된 eID-Me 디지털 ID - eID-Me ID 증명에서 발급
    • 사용자는 앱의 디지털 지갑에 디지털 ID를 발급합니다. 유효한 ID 문서가 필요합니다.

eID-Me 앱은 트랜잭션 중에 사용자를 인증합니다. X509 공개 키 인증은 eID-Me 디지털 ID의 프라이빗 서명 키를 사용하여 암호 없는 MFA를 제공합니다.

다음 다이어그램은 Azure AD B2C 흐름 외부에서 발생하는 eID-Me ID 증명을 보여 줍니다.

Diagram of the identity proofing flow in eID-Me.

  1. 사용자가 eID-Me 스마트폰 애플리케이션에 셀카를 업로드합니다.
  2. 사용자가 발급한 정부 발급 신분증(예: 여권 또는 운전면허증)을 검사하여 eID-Me 스마트폰 애플리케이션에 업로드합니다.
  3. eID-Me는 확인을 위해 ID 검증 서비스에 데이터를 제출합니다.
  4. 사용자에게는 애플리케이션에 저장되는 디지털 ID가 발급됩니다.

다음 다이어그램은 eID-Me와 Azure AD B2C 통합을 보여 줍니다.

Diagram of Azure AD B2C integration with eID-Me.

  1. 사용자가 Azure AD B2C 로그인 페이지를 열고 사용자 이름으로 로그인하거나 등록합니다.
  2. 사용자가 Azure AD B2C 로그인 및 등록 정책으로 전달되었습니다.
  3. Azure AD B2C는 OIDC 인증 코드 흐름을 사용하여 사용자를 eID-Me ID 라우터로 리디렉션합니다.
  4. 라우터는 인증 및 권한 부여 요청 세부 정보와 함께 사용자 모바일 앱에 푸시 알림을 보냅니다.
  5. 사용자 인증 질문이 나타난 다음 ID 요청에 대한 프롬프트가 나타납니다.
  6. 챌린지 응답은 라우터로 전달됩니다.
  7. 라우터는 인증 결과로 Azure AD B2C에 회신합니다.
  8. Azure AD B2C ID 토큰 응답이 애플리케이션으로 이동합니다.
  9. 사용자에게 액세스 권한이 부여되거나 거부됩니다.

eID-Me 시작

bluink.ca 문의하기 페이지로 이동하여 Azure AD B2C 테넌트를 신뢰 당사자로 설정하기 위한 테스트 또는 프로덕션 환경 구성을 목표로 하는 데모를 요청합니다. 테넌트는 eID-Me에 등록한 소비자에게 필요한 ID 검증을 결정합니다.

eID-Me에서 애플리케이션 구성

eID-Me에서 테넌트 애플리케이션을 eID-ME 신뢰 당사자로 구성하려면 다음 정보를 제공합니다.

속성 설명
이름 Azure AD B2C 또는 다른 애플리케이션 이름
도메인 name.onmicrosoft.com
리디렉션 URI https://jwt.ms
리디렉션 URL https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
예: https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp
사용자 지정 도메인의 경우 https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp.를 입력합니다.
애플리케이션 홈페이지 URL 최종 사용자에게 표시됨
애플리케이션 개인정보처리방침 URL 최종 사용자에게 표시됨

참고 항목

신뢰 당사자가 구성되면 ID-Me는 클라이언트 ID와 클라이언트 암호를 제공합니다. Azure AD B2C에서 IdP(ID 공급자)를 구성하려면 클라이언트 ID와 클라이언트 암호를 기록해 둡니다.

Azure AD B2C에서 새 ID 공급자 추가

다음 지침에서는 Azure AD B2C 테넌트가 있는 디렉터리를 사용합니다.

  1. Azure AD B2C 테넌트의 전역 관리자로 Azure Portal에 로그인합니다.
  2. 위쪽 메뉴에서 디렉터리 + 구독을 선택합니다.
  3. 테넌트가 있는 디렉터리를 선택합니다.
  4. Azure Portal의 왼쪽 위에서 모든 서비스를 선택합니다.
  5. Azure AD B2C를 검색하고 선택합니다.
  6. 대시보드>Azure Active Directory B2C>ID 공급자로 이동합니다.
  7. OpenID Connect 공급자를 선택합니다.
  8. 추가를 선택합니다.

ID 공급자 구성

ID 공급자를 구성하려면 다음을 수행합니다.

  1. ID 공급자 유형>OpenID Connect를 차례로 선택합니다.
  2. ID 공급자 양식에서 이름eID-Me Passwordless 또는 다른 이름을 입력합니다.
  3. 클라이언트 ID에는 eID-Me의 클라이언트 ID를 입력합니다.
  4. 클라이언트 암호에 eID-Me의 클라이언트 암호를 입력합니다.
  5. 범위에서 openid 메일 프로필을 선택합니다.
  6. 응답 형식의 경우 code를 선택합니다.
  7. 응답 모드의 경우 양식 게시를 선택합니다.
  8. 확인을 선택합니다.
  9. 이 ID 공급자의 클레임 매핑을 선택합니다.
  10. 사용자 ID에는 sub를 사용합니다.
  11. 표시 이름에는 이름을 사용합니다.
  12. 지정된 이름으로 given_name을 사용합니다.
  13. 으로 family_name을 사용합니다.
  14. 이메일email을 사용합니다.
  15. 저장을 선택합니다.

Multi-Factor Authentication 구성

eID-Me는 다단계 인증자이므로 사용자 흐름 다단계 인증 구성이 필요하지 않습니다.

사용자 흐름 정책 만들기

다음 지침에서는 eID-Me가 B2C ID 공급자의 새로운 OIDC ID 공급자로 표시됩니다.

  1. Azure AD B2C 테넌트에서의 정책 아래에서 사용자 흐름을 선택합니다.
  2. 새 사용자 흐름을 선택합니다.
  3. 가입 및 로그인>버전>만들기를 선택합니다.
  4. 정책 이름을 입력합니다.
  5. ID 공급자에서 만들어진 eID-Me ID 공급자를 선택합니다.
  6. 로컬 계정으로 없음을 선택합니다. 이 선택 항목은 메일 및 암호 인증을 사용하지 않도록 설정합니다.
  7. 사용자 흐름 실행을 선택합니다.
  8. https://jwt.ms와 같은 회신 URL을 입력합니다.
  9. 브라우저가 eID-Me 로그인 페이지로 리디렉션됩니다.
  10. 사용자 등록에서 계정 이름을 입력합니다.
  11. 사용자는 eID-Me가 설치된 모바일 디바이스에서 푸시 알림을 받습니다.
  12. 인증 질문이 나타납니다.
  13. 요청이 수락되고 브라우저가 회신 URL로 리디렉션됩니다.

참고 항목

Azure AD B2C(Azure Active Directory B2C)에는 애플리케이션과 사용자의 상호 작용을 정의하는 두 가지 방법(미리 정의된 사용자 흐름 또는 구성 가능한 사용자 지정 정책)이 있습니다. 사용자 지정 정책은 복잡한 시나리오를 해결합니다. 대부분의 시나리오에서는 사용자 흐름을 권장합니다. 사용자 흐름 및 사용자 지정 정책 비교를 참조하세요.

정책 키 만들기

Azure AD B2C 테넌트에 기록한 클라이언트 암호를 저장합니다. 다음 지침에서는 Azure AD B2C 테넌트가 있는 디렉터리를 사용합니다.

  1. Azure Portal에 로그인합니다.
  2. 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
  3. 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
  4. 전환을 선택합니다.
  5. Azure Portal의 왼쪽 위에서 모든 서비스를 선택합니다.
  6. Azure AD B2C를 검색하고 선택합니다.
  7. 개요 페이지에서 ID 경험 프레임워크를 선택합니다.
  8. 정책 키를 선택합니다.
  9. 추가를 선택합니다.
  10. 옵션에서 수동을 선택합니다.
  11. 정책 키의 이름을 입력합니다. 예: eIDMeClientSecret. 접두사 B2C_1A_가 키 이름에 추가됩니다.
  12. 비밀에 기록해 둔 클라이언트 암호를 입력합니다.
  13. 사용으로는 서명을 선택합니다.
  14. 만들기를 실행합니다.

eID-Me를 ID 공급자로 구성

사용자가 eID-Me로 로그인할 수 있도록 eID-Me를 클레임 공급자로 정의합니다. Azure AD B2C는 엔드포인트를 통해 통신합니다. 엔드포인트는 디바이스의 디지털 ID로 사용자 인증을 확인하기 위해 Azure AD B2C에서 사용하는 클레임을 제공합니다.

eID-Me를 클레임 공급자로 정의하려면 정책 확장 파일의 ClaimsProvider 요소에 추가합니다.

  1. TrustFrameworkExtensions.xml 파일을 엽니다.

  2. ClaimsProviders 요소를 찾습니다. 표시되지 않으면 루트 요소 아래에 추가합니다.

  3. ClaimsProvider를 추가합니다.

       <ClaimsProvider>
       <Domain>eID-Me</Domain>
       <DisplayName>eID-Me</DisplayName>
       <TechnicalProfiles>
         <TechnicalProfile Id="eID-Me-OIDC">
           <!-- The text in the following DisplayName element is shown to the user on the claims provider 
    selection screen. -->
           <DisplayName>eID-Me for Sign In</DisplayName>
           <Protocol Name="OpenIdConnect" />
           <Metadata>
             <Item Key="ProviderName">https://eid-me.bluink.ca</Item>
             <Item Key="METADATA">https://demoeid.bluink.ca/.well-known/openid-configuration</Item>
             <Item Key="response_types">code</Item>
             <Item Key="scope">openid email profile</Item>
             <Item Key="response_mode">form_post</Item>
             <Item Key="HttpBinding">POST</Item>
             <Item Key="token_endpoint_auth_method">client_secret_post</Item>
             <Item Key="client_id">eid_me_rp_client_id</Item>
             <Item Key="UsePolicyInRedirectUri">false</Item>
           </Metadata>
           <CryptographicKeys>
             <Key Id="client_secret" StorageReferenceId="B2C_1A_eIDMeClientSecret" />
           </CryptographicKeys>
           <InputClaims />
           <OutputClaims>
             <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
             <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid" />
             <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
             <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
             <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
             <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
             <OutputClaim ClaimTypeReferenceId="IAL" PartnerClaimType="identity_assurance_level_achieved" DefaultValue="unknown IAL" />
             <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
             <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
             <OutputClaim ClaimTypeReferenceId="locality" PartnerClaimType="locality" DefaultValue="unknown locality" />
             <OutputClaim ClaimTypeReferenceId="region" PartnerClaimType="region" DefaultValue="unknown region" />
           </OutputClaims>
           <OutputClaimsTransformations>
             <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
             <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
             <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
             <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
           </OutputClaimsTransformations>
           <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
         </TechnicalProfile>
       </TechnicalProfiles>
     </ClaimsProvider>
    
  4. eid_me_rp_client_id에 eID-Me 신뢰 당사자 클라이언트 ID를 입력합니다.

  5. 저장을 선택합니다.

지원되는 ID 클레임

eID-Me가 지원하는 ID 클레임을 더 추가할 수 있습니다.

  1. TrustFrameworksExtension.xml 파일을 엽니다.
  2. BuildingBlocks 요소를 찾습니다.

참고 항목

well-known/openid-configuration의 OIDC 식별자가 있는 OID 리포지토리에서 지원되는 eID-Me ID 클레임 목록을 찾아보세요.

<BuildingBlocks>
<ClaimsSchema>
 <ClaimType Id="IAL">
     <DisplayName>Identity Assurance Level</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="identity_assurance_level_achieved" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The Identity Assurance Level Achieved during proofing of the digital identity.</AdminHelpText>
     <UserHelpText>The Identity Assurance Level Achieved during proofing of the digital identity.</UserHelpText>
     <UserInputType>Readonly</UserInputType>
   </ClaimType>

<ClaimType Id="picture">
     <DisplayName>Portrait Photo</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="thumbnail_portrait" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The portrait photo of the user.</AdminHelpText>
     <UserHelpText>Your portrait photo.</UserHelpText>
     <UserInputType>Readonly</UserInputType>
   </ClaimType>

 <ClaimType Id="middle_name">
     <DisplayName>Portrait Photo</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="middle_name" />
     </DefaultPartnerClaimTypes>
     <UserHelpText>Your middle name.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

<ClaimType Id="birthdate">
     <DisplayName>Date of Birth</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="birthdate" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's date of birth.</AdminHelpText>
     <UserHelpText>Your date of birth.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

 <ClaimType Id="gender">
     <DisplayName>Gender</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="gender" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's gender.</AdminHelpText>
     <UserHelpText>Your gender.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>
 
 <ClaimType Id="street_address">
     <DisplayName>Locality/City</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="street_address" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's full street address, which MAY include house number, street name, post office box.</AdminHelpText>
     <UserHelpText>Your street address of residence.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

<ClaimType Id="locality">
     <DisplayName>Locality/City</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="locality" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's current city or locality of residence.</AdminHelpText>
     <UserHelpText>Your current city or locality of residence.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

   <ClaimType Id="region">
     <DisplayName>Province or Territory</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="region" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's current province or territory of residence.</AdminHelpText>
     <UserHelpText>Your current province or territory of residence.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

   <ClaimType Id="country">
     <DisplayName>Country</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="country" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's current country of residence.</AdminHelpText>
     <UserHelpText>Your current country of residence.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

   <ClaimType Id="dl_number">
     <DisplayName>Driver's Licence Number</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="dl_number" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's driver's licence number.</AdminHelpText>
     <UserHelpText>Your driver's licence number.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>

   <ClaimType Id="dl_class">
     <DisplayName>Driver's Licence Class</DisplayName>
     <DataType>string</DataType>
     <DefaultPartnerClaimTypes>
       <Protocol Name="OpenIdConnect" PartnerClaimType="dl_class" />
     </DefaultPartnerClaimTypes>
     <AdminHelpText>The user's driver's licence class.</AdminHelpText>
     <UserHelpText>Your driver's licence class.</UserHelpText>
     <UserInputType>TextBox</UserInputType>
   </ClaimType>
 </ClaimsSchema>

사용자 경험 추가

다음 지침에서는 ID 공급자가 설정되지만 로그인 페이지에서는 설정되지 않습니다. 사용자 지정 사용자 경험이 없는 경우 템플릿 사용자 경험을 복사합니다.

  1. 시작 팩에서 TrustFrameworkBase.xml 파일을 엽니다.
  2. ID=SignUpOrSignIn을 포함하는 UserJourneys 요소의 콘텐츠를 찾아 복사합니다.
  3. TrustFrameworkExtensions.xml 파일을 엽니다.
  4. UserJourneys 요소를 찾습니다. 요소가 표시되지 않으면 요소를 추가합니다.
  5. UserJourney 요소의 콘텐츠를 UserJourneys 요소의 자식 항목으로 붙여넣습니다.
  6. 사용자 경험 ID의 이름을 바꿉니다(예: ID=CustomSignUpSignIn).

사용자 경험에 ID 공급자 추가

사용자 경험에 새 ID 공급자를 추가합니다.

  1. 사용자 경험에서 Type=CombinedSignInAndSignUp 또는 Type=ClaimsProviderSelection인 오케스트레이션 단계 요소를 찾습니다. 일반적으로 첫 번째 오케스트레이션 단계입니다. ClaimsProviderSelections 요소에는 사용자가 로그인하는 ID 공급자 목록이 있습니다. 요소의 순서는 사용자에게 표시되는 로그인 단추의 순서를 제어합니다.
  2. ClaimsProviderSelection XML 요소를 추가합니다.
  3. TargetClaimsExchangeId 값을 식별 이름으로 설정합니다.
  4. 다음 오케스트레이션 단계에서 ClaimsExchange 요소를 추가합니다.
  5. Id를 대상 소유권 교환 ID 값으로 설정합니다.
  6. vTechnicalProfileReferenceId 값을 만든 기술 프로필 ID로 업데이트합니다.

다음 XML은 ID 공급자를 사용한 7가지 사용자 경험 오케스트레이션 단계를 보여 줍니다.

 <UserJourney Id="eIDME-SignUpOrSignIn">
   <OrchestrationSteps>
     <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
       <ClaimsProviderSelections>
         <ClaimsProviderSelection TargetClaimsExchangeId="eIDMeExchange" />
        </ClaimsProviderSelections>
   </OrchestrationStep>
     <!-- Check if the user has selected to sign in using one of the social providers -->
     <OrchestrationStep Order="2" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
           <Value>objectId</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="eIDMeExchange" TechnicalProfileReferenceId="eID-Me-OIDC" />
       </ClaimsExchanges>
     </OrchestrationStep>
     <!-- For social IDP authentication, attempt to find the user account in the directory. -->
     <OrchestrationStep Order="3" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
           <Value>authenticationSource</Value>
           <Value>localAccountAuthentication</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
       </ClaimsExchanges>
     </OrchestrationStep>
     <!-- Show self-asserted page only if the directory does not have the user account already (i.e. we do not have an objectId).  -->
     <OrchestrationStep Order="4" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
           <Value>objectId</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social" />
       </ClaimsExchanges>
     </OrchestrationStep>
     <!-- This step reads any user attributes that we may not have received when authenticating using ESTS so they can be sent in the token. -->
     <OrchestrationStep Order="5" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
           <Value>authenticationSource</Value>
           <Value>socialIdpAuthentication</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="AADUserReadWithObjectId" TechnicalProfileReferenceId="AAD-UserReadUsingObjectId" />
       </ClaimsExchanges>
     </OrchestrationStep>
     <!-- The previous step (SelfAsserted-Social) could have been skipped if there were no attributes to collect 
          from the user. So, in that case, create the user in the directory if one does not already exist 
          (verified using objectId which would be set from the last step if account was created in the directory. -->
     <OrchestrationStep Order="6" Type="ClaimsExchange">
       <Preconditions>
         <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
           <Value>objectId</Value>
           <Action>SkipThisOrchestrationStep</Action>
         </Precondition>
       </Preconditions>
       <ClaimsExchanges>
         <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId" />
       </ClaimsExchanges>
     </OrchestrationStep>
     <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
   </OrchestrationSteps>
   <ClientDefinition ReferenceId="DefaultWeb" />
 </UserJourney>

신뢰 당사자 정책 구성

신뢰 당사자 정책은 Azure AD B2C가 실행하는 사용자 경험을 지정합니다. 애플리케이션에 전달된 클레임을 제어할 수 있습니다. eID-Me-OIDC-Signup TechnicalProfile 요소의 OutputClaims 요소를 조정합니다. 다음 샘플에서 애플리케이션은 사용자 우편 번호, 소재지, 지역, IAL, 증명 사진, 중간 이름 및 생년월일을 수신합니다. 계정이 만들어졌는지 여부를 나타내는 부울 signupConditionsSatisfied 클레임을 수신합니다.

 <RelyingParty>
     <DefaultUserJourney ReferenceId="eIDMe-SignUpOrSignIn" />
     <TechnicalProfile Id="PolicyProfile">
       <DisplayName>PolicyProfile</DisplayName>
       <Protocol Name="OpenIdConnect" />
       <OutputClaims>
         <OutputClaim ClaimTypeReferenceId="displayName" />
         <OutputClaim ClaimTypeReferenceId="givenName" />
         <OutputClaim ClaimTypeReferenceId="surname" />
         <OutputClaim ClaimTypeReferenceId="email" />
         <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
         <OutputClaim ClaimTypeReferenceId="identityProvider" />
         <OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
         <OutputClaim ClaimTypeReferenceId="postalCode" PartnerClaimType="postal_code" DefaultValue="unknown postal_code" />
         <OutputClaim ClaimTypeReferenceId="locality" PartnerClaimType="locality" DefaultValue="unknown locality" />
         <OutputClaim ClaimTypeReferenceId="region" PartnerClaimType="region" DefaultValue="unknown region" />
         <OutputClaim ClaimTypeReferenceId="IAL" PartnerClaimType="identity_assurance_level_achieved" DefaultValue="unknown IAL" />
         <OutputClaim ClaimTypeReferenceId="picture" PartnerClaimType="thumbnail_portrait" DefaultValue="unknown portrait" />
         <OutputClaim ClaimTypeReferenceId="middle_name" PartnerClaimType="middle_name" DefaultValue="unknown middle name" />
         <OutputClaim ClaimTypeReferenceId="birthdate" PartnerClaimType="birthdate" DefaultValue="unknown DOB" />
         <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="signupConditionsSatisfied" DefaultValue="false" />
       </OutputClaims>
       <SubjectNamingInfo ClaimType="sub" />
     </TechnicalProfile>
   </RelyingParty>

사용자 지정 정책 업로드

다음 지침에서는 Azure AD B2C 테넌트가 있는 디렉터리를 사용합니다.

  1. Azure Portal에 로그인합니다.
  2. 포털 도구 모음에서 디렉터리 + 구독을 선택합니다.
  3. 포털 설정, 디렉터리 + 구독 페이지의 디렉터리 이름 목록에서 Azure AD B2C 디렉터리를 찾습니다.
  4. 전환을 선택합니다.
  5. Azure Portal에서 Azure AD B2C를 검색하고 선택합니다.
  6. 정책에서 Identity Experience Framework를 선택합니다.
  7. 사용자 지정 정책 업로드를 선택합니다.
  8. 변경한 정책 파일 2개를 다음 순서로 업로드합니다.
  • 확장 정책(예: TrustFrameworkBase.xml)
  • 신뢰 당사자 정책의 경우 예를 들면 SignUp.xml입니다.

사용자 지정 정책 테스트

  1. 신뢰 당사자 정책(예: B2C_1A_signup)을 선택합니다.
  2. 애플리케이션에서 등록한 웹 애플리케이션을 선택합니다.
  3. 회신 URLhttps://jwt.ms입니다.
  4. 지금 실행을 선택합니다.
  5. 등록 정책은 eID-Me를 호출합니다.
  6. 로그인하려면 eID-Me를 선택합니다.
  7. 브라우저가 https://jwt.ms로 리디렉션됩니다.
  8. Azure AD B2C에서 반환된 토큰 콘텐츠가 표시됩니다.

자세히 알아보기: 자습서: Azure AD B2C에서 웹 애플리케이션 등록

다음 단계