다음을 통해 공유


ID 확인을 위해 Bluink eID-Me를 사용하여 Azure Active Directory B2C 구성

중요합니다

2025년 5월 1일부터 새 고객을 위해 Azure AD B2C를 더 이상 구매할 수 없습니다. FAQ에서 자세히 알아보세요.

시작하기 전 주의 사항:

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

eID-Me와 Azure AD B2C 인증 통합

Azure AD B2C 인증을 캐나다 시민을 위한 ID 확인 및 탈중앙화 디지털 ID 솔루션인 Bluink eID-Me와 통합하는 방법을 알아봅니다. eID-Me를 사용하면 Azure AD B2C 테넌트가 사용자 ID를 확인하고, 확인된 등록 및 로그인 ID 클레임을 얻습니다. 통합은 보안 디지털 ID를 사용하여 다단계 인증 및 암호 없는 로그인을 지원합니다. 조직은 IAL(Identity Assurance Level) 2 및 KYC(Know Your Customer) 요구 사항을 충족할 수 있습니다.

자세한 내용은 bluink.ca: Bluink Ltd.로 이동하세요.

필수 조건

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

참고 항목: 자습서: Azure AD B2C에서 사용자 흐름 및 사용자 지정 정책 만들기

시나리오 설명

eID-Me는 Azure AD B2C와 OIDC(OpenID Connect) ID 공급자로 통합됩니다. 다음 구성 요소는 Azure AD B2C를 사용하는 eID-Me 솔루션으로 구성됩니다.

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

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

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

eID-Me의 ID 교정 흐름 다이어그램.

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

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

eID-Me와 Azure AD B2C 통합 다이어그램

  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 시작

Azure AD B2C 테넌트를 신뢰 당사자로 설정하도록 테스트 또는 프로덕션 환경을 구성하는 것을 목표로 데모를 요청하려면 bluink.ca 문의 페이지로 이동합니다. 테넌트는 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에서 ID 공급자(IdP)를 구성하려면 클라이언트 ID 및 클라이언트 암호를 기록해 둡니다.

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

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

  1. Azure AD B2C 테넌트에서 적어도 B2C IEF 정책 관리자로 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 암호 없는 이름 또는 다른 이름을 입력합니다.
  3. 클라이언트 ID의 경우 eID-Me의 클라이언트 ID를 입력합니다.
  4. 클라이언트 암호의 경우 eID-Me에서 클라이언트 비밀을 입력합니다.
  5. 범위의 경우 openid 전자 메일 프로필을 선택합니다.
  6. 응답 형식의 경우 코드를 선택합니다.
  7. 응답 모드의 경우 양식 게시물을 선택합니다.
  8. 확인을 선택합니다.
  9. 이 ID 공급자의 클레임 매핑을 선택합니다.
  10. 사용자 ID의 경우 sub을 사용합니다.
  11. 표시 이름의 경우 name을 사용합니다.
  12. 지정된 이름의 경우 given_name 사용합니다.
  13. 으로 family_name을 사용합니다.
  14. 전자 메일의 경우 전자 메일을 사용합니다.
  15. 저장을 선택합니다.

다단계 인증 구성

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

사용자 흐름 정책 만들기

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

  1. Azure AD B2C 테넌트에서 정책 아래에서 사용자 흐름을 선택합니다.
  2. 새 사용자 흐름을 선택합니다.
  3. 등록 및 로그인>버전>만들기를 선택합니다.
  4. 정책 이름을 입력합니다.
  5. ID 공급자에서 만든 eID-Me ID 공급자를 선택합니다.
  6. 로컬 계정의 경우 없음을 선택합니다. 선택 영역은 전자 메일 및 암호 인증을 사용하지 않도록 설정합니다.
  7. 사용자 흐름 실행을 선택합니다.
  8. 회신 URL(예: https://jwt.ms)을 입력합니다.
  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. 선택하고생성합니다.

id 공급자로 eID-Me 구성

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

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 요소를 찾습니다.

비고

지원되는 eID-Me ID 클레임은 OID 리포지토리에서 찾을 수 있으며, OIDC ID는 well-known/openid-configuration에 있습니다.

<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 요소의 내용을 찾아 복사합니다.
  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. 만든 기술 프로필 ID로 vTechnicalProfileReferenceId 값을 업데이트합니다.

다음 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. 정책에서 ID 환경 프레임워크를 선택합니다.
  7. 사용자 지정 정책 업로드를 선택합니다.
  8. 변경한 두 정책 파일을 다음 순서로 업로드합니다.
  • 확장 정책(예: TrustFrameworkBase.xml
  • 신뢰 당사자 정책(예: SignUp.xml)

사용자 지정 정책 테스트

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

자세한 정보: 자습서: Azure AD B2C에 웹 애플리케이션 등록

다음 단계