Azure Active Directory B2C 사용자 지정 정책에서 자체 어설션된 기술 프로필 정의

참고 항목

Azure Active Directory B2C에서 사용자 지정 정책은 주로 복잡한 시나리오를 해결하기 위해 설계되었습니다. 대부분의 시나리오에서 기본 제공 사용자 흐름을 사용하는 것이 좋습니다. 아직 수행하지 않았다면 Active Directory B2C에서 사용자 지정 정책 시작하기에서 사용자 지정 정책 스타터 팩에 대해 알아봅니다.

사용자가 입력을 제공해야 하는 Azure AD B2C(Azure Active Directory B2C)의 모든 상호 작용은 자체 어설션된 기술 프로필입니다. 예를 들어 등록 페이지, 로그인 페이지 또는 암호 재설정 페이지가 있습니다.

프로토콜

Protocol 요소의 Name 특성을 .로 설정Proprietary해야 합니다. 프로필이 자체 어설션되도록 하려면 handler 특성이 Azure AD B2C에서 사용되는 프로토콜 처리기 어셈블리의 정규화된 이름을 포함해야 합니다. Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

다음 예제에서는 전자 메일 등록을 위한 자체 어설션된 기술 프로필을 보여 있습니다.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

입력 클레임

자체 어설션된 기술 프로필에서 InputClaims 및 InputClaimsTransformations 요소를 사용하여 자체 어설션된 페이지에 표시되는 클레임의 값을 미리 입력할 수 있습니다(클레임 표시). 예를 들어 프로필 편집 정책의 사용자 경험에서는 먼저 Azure AD B2C 디렉터리 서비스에서 사용자 프로필을 읽습니다. 그러면 자체 어설션된 기술 프로필이 사용자 프로필에 저장된 사용자 데이터로 입력 클레임을 설정합니다. 이러한 클레임은 사용자 프로필에서 수집된 다음, 기존 데이터를 편집할 수 있는 사용자에게 표시됩니다.

<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="givenName" />
    <InputClaim ClaimTypeReferenceId="surname" />
  </InputClaims>

표시 클레임

DisplayClaims 요소에는 사용자로부터 데이터를 수집하기 위해 화면에 표시할 클레임 목록이 포함되어 있습니다. 표시 클레임 값을 미리 채우려면 이전에 설명한 입력 클레임을 사용합니다. 이 요소는 기본값을 포함할 수도 있습니다.

DisplayClaims의 클레임 순서는 Azure AD B2C가 화면에서 클레임을 렌더링하는 순서를 지정합니다. 사용자가 특정 클레임에 대한 값을 입력하도록 강제 지정하려면 DisplayClaim 요소의 Required 특성을 true로 설정합니다.

DisplayClaims 컬렉션의 ClaimType 요소는 UserInputType 요소를 Azure AD B2C에서 지원하는 모든 사용자 입력 형식으로 설정해야 합니다. 예를 들어 TextBox 또는 DropdownSingleSelect입니다.

DisplayControl에 대한 참조 추가

표시 클레임 컬렉션에서 만든 DisplayControl에 대한 참조를 포함할 수 있습니다. 표시 컨트롤은 특수한 기능을 가지며 Azure AD B2C 백 엔드 서비스와 상호 작용하는 사용자 인터페이스 요소입니다. 이를 통해 사용자는 백 엔드에서 유효성 검사 기술 프로필을 호출하는 페이지에서 작업을 수행할 수 있습니다. 예를 들어 메일 주소, 전화 번호 또는 고객 전용 번호를 확인합니다.

다음 예제 TechnicalProfile 에서는 표시 컨트롤과 함께 표시 클레임을 사용하는 방법을 보여 줍니다.

  • 첫 번째 표시 클레임은 전자 메일 주소를 수집하고 확인하는 표시 컨트롤을 참조 emailVerificationControl 합니다.
  • 두 번째 표시 클레임은 CAPTCHA 코드를 생성하고 확인하는 디스플레이 컨트롤에 대한 참조 captchaChallengeControl 를 만듭니다.
  • 여섯 번째 표시 클레임은 전화 번호를 수집하고 확인하는 디스플레이 컨트롤을 참조 phoneVerificationControl 합니다.
  • 다른 표시 클레임은 사용자로부터 수집할 ClaimTypes입니다.
<TechnicalProfile Id="Id">
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
</TechnicalProfile>

멘션 표시 컨트롤에 대한 참조가 있는 표시 클레임은 전자 메일 주소 확인과 같은 자체 유효성 검사를 실행할 수 있습니다. 또한 자체 어설션된 페이지는 다음 오케스트레이션 단계로 이동하기 전에 유효성 검사 기술 프로필을 사용하여 사용자 입력(클레임 형식 또는 표시 컨트롤)을 포함하여 전체 페이지의 유효성을 검사할 수 있도록 지원합니다.

표시 클레임 및 출력 클레임의 사용을 신중하게 결합

자체 어설션된 기술 프로필에서 하나 이상의 DisplayClaim 요소를 지정하는 경우 화면에 표시하고 사용자로부터 수집할 ‘모든’ 클레임에 DisplayClaim을 사용해야 합니다. 하나 이상의 표시 클레임이 포함된 자체 어설션된 기술 프로필에서 표시하는 출력 클레임은 없습니다.

클레임이 기본 정책에서 age 출력 클레임으로 정의되는 다음 예제를 고려합니다. 자체 어설션된 기술 프로필 age 에 표시 클레임을 추가하기 전에 사용자의 데이터 수집을 위해 클레임이 화면에 표시됩니다.

<TechnicalProfile Id="id">
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="age" />
  </OutputClaims>
</TechnicalProfile>

해당 기본을 상속하는 리프 정책이 이후에 표시 클레임으로 지정 officeNumber 하는 경우:

<TechnicalProfile Id="id">
  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="officeNumber" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="officeNumber" />
  </OutputClaims>
</TechnicalProfile>

기본 정책의 age 클레임은 더 이상 사용자에게 화면에 표시되지 않으며 사실상 "숨겨진" 것입니다. age 클레임을 표시하고 사용자로부터 age 값을 수집하려면 ageDisplayClaim을 추가해야 합니다.

출력 클레임

OutputClaims 요소에는 다음 오케스트레이션 단계로 반환되는 클레임 목록이 포함되어 있습니다. DefaultValue 특성은 클레임이 설정되지 않은 경우에만 적용됩니다. 이전 오케스트레이션 단계에서 설정한 경우 사용자가 값을 비워 두더라도 기본값이 적용되지 않습니다. 기본값을 강제로 사용하려면 AlwaysUseDefaultValue 특성을 true.로 설정합니다.

보안상의 이유로 암호 클레임 값(UserInputType 설정 Password)은 자체 어설션된 기술 프로필의 유효성 검사 기술 프로필에서만 사용할 수 있습니다. 다음 오케스트레이션 단계에서는 암호 클레임을 사용할 수 없습니다.

참고 항목

이전 버전의 IEF(Identity Experience Framework)에서는 출력 클레임을 사용하여 사용자로부터 데이터를 수집했습니다. 사용자로부터 데이터를 수집하려면 DisplayClaims 컬렉션을 대신 사용합니다.

OutputClaimsTransformations 요소에는 출력 클레임을 수정하거나 새 클레임을 생성하는 데 사용되는 OutputClaimsTransformation 요소의 컬렉션이 포함될 수 있습니다.

출력 클레임을 사용해야 하는 경우

자체 어설션된 기술 프로필에서 출력 클레임 컬렉션은 다음 오케스트레이션 단계로 클레임을 반환합니다.

다음과 같은 경우 출력 클레임을 사용합니다.

  • 클레임은 출력 클레임 변환에 의해 출력됩니다.
  • 사용자로부터 데이터를 수집하거나 유효성 검사 기술 프로필에서 데이터를 반환하지 않고 출력 클레임 에서 기본값을 설정합니다. 자체 어설션된 기술 프로필은 LocalAccountSignUpWithLogonEmail 실행된 SelfAsserted-Input 클레임을 .로 true설정합니다.
  • 유효성 검사 기술 프로필이 출력 클레임 반환 - 기술 프로필이 일부 클레임을 반환하는 유효성 검사 기술 프로필을 호출할 수 있습니다. 클레임을 버블 업하고 사용자 경험의 다음 오케스트레이션 단계로 반환할 수 있습니다. 예를 들어 로컬 계정으로 로그인할 때 자체 어설션된 기술 프로필은 명명 SelfAsserted-LocalAccountSignin-Emaillogin-NonInteractive된 유효성 검사 기술 프로필을 호출합니다. 이 기술 프로필은 사용자 자격 증명의 유효성을 검사하고 사용자 프로필도 반환합니다. 'userPrincipalName', 'displayName', 'givenName' 및 'surName'과 같은
  • 디스플레이 컨트롤은 출력 클레임을 반환합니다. 기술 프로필에 표시 컨트롤에 대한 참조가 있을 수 있습니다. 표시 컨트롤은 확인된 메일 주소와 같은 일부 클레임을 반환합니다. 클레임을 버블 업하고 사용자 경험의 다음 오케스트레이션 단계로 반환할 수 있습니다.

다음 예제에서는 표시 클레임 및 출력 클레임을 모두 사용하는 자체 어설션된 기술 프로필을 사용하는 방법을 보여 줍니다.

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <DisplayClaims>
    <DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
    <DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
    <DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
  </DisplayClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

출력 클레임 등록 또는 로그인 페이지

결합된 등록 및 로그인 페이지에서 콘텐츠 정의 DataUri 요소를 사용할 때 unifiedssp 또는 unifiedssd 페이지 유형을 지정하는 다음 사항에 유의하세요.

  • 사용자 이름 및 암호 클레임만 렌더링됩니다.
  • 처음 두 개의 출력 클레임은 사용자 이름과 암호(이 순서대로)여야 합니다.
  • 다른 모든 클레임은 렌더링되지 않습니다. 해당 클레임의 경우 defaultValue를 설정하거나 클레임 양식 유효성 검사 기술 프로필을 호출해야 합니다.

클레임 유지

PersistedClaims 요소는 사용되지 않습니다. 자체 어설션된 기술 프로필은 Azure AD B2C에 데이터를 유지하지 않습니다. 대신 데이터 유지를 담당하는 유효성 검사 기술 프로필에 대한 호출이 수행됩니다. 예를 들어 등록 정책은 자체 어설션된 기술 프로필을 사용하여 LocalAccountSignUpWithLogonEmail 새 사용자 프로필을 수집합니다. 기술 프로필은 LocalAccountSignUpWithLogonEmail 유효성 검사 기술 프로필을 호출하여 Azure AD B2C에서 계정을 만듭니다.

유효성 검사 기술 프로필

유효성 검사 기술 프로필은 참조 기술 프로필의 일부 또는 모든 출력 클레임 유효성을 검사하는 데 사용됩니다. 유효성 검사 기술 프로필의 입력 클레임은 자체 어설션된 기술 프로필의 출력 클레임에 표시되어야 합니다. 유효성 검사 기술 프로필은 사용자 입력의 유효성을 검사하고 사용자에게 오류를 반환할 수 있습니다.

Microsoft Entra ID 또는 REST API 기술 프로필과 같이 정책에 포함된 어떤 기술 프로필이든 유효성 검사 기술 프로필로 사용될 수 있습니다. 이전 예제에서 기술 프로필은 LocalAccountSignUpWithLogonEmail signinName이 디렉터리에 없는지 확인합니다. 그렇지 않은 경우 유효성 검사 기술 프로필은 로컬 계정을 만들고 objectId, authenticationSource, newUser를 반환합니다. SelfAsserted-LocalAccountSignin-Email 기술 프로필은 사용자 자격 증명의 유효성을 검사하기 위해 login-NonInteractive 유효성 검사 기술 프로필을 호출합니다.

또한 비즈니스 논리를 사용하여 REST API 기술 프로필을 호출하거나, 입력 클레임을 덮어쓰거나, 회사 기간 업무 애플리케이션과 추가로 통합하여 사용자 데이터를 보강할 수 있습니다. 자세한 내용은 유효성 검사 기술 프로필을 참조 하세요.

참고 항목

유효성 검사 기술 프로필은 사용자의 입력이 있을 때만 트리거됩니다. ValidationTechnicalProfile 요소의 ContinueOnError 특성을 활용하기 위해 유효성 검사 기술 프로필을 호출하는 자체 어설션된 기술 프로필을 만들 수 없습니다. 사용자로부터 입력을 요청하는 자체 어설션된 기술 프로필 또는 사용자 경험의 오케스트레이션 단계에서만 유효성 검사 기술 프로필을 호출할 수 있습니다.

메타데이터

Attribute Required 설명
setting.operatingMode 1 아니요 로그인 페이지의 경우 이 속성은 입력 유효성 검사 및 오류 메시지와 같은 사용자 이름 필드의 동작을 제어합니다. 필요한 값은 Username 또는 Email입니다. 이 메타데이터의 라이브 데모를 확인하세요.
AllowGenerationOfClaimsWithNullValues 아니요 null 값을 사용하여 클레임을 생성할 수 있습니다. 예를 들어 사용자가 확인란을 선택하지 않은 경우입니다.
ContentDefinitionReferenceId 이 기술 프로필과 연결된 콘텐츠 정의식별자입니다.
EnforceEmailVerification 아니요 등록 또는 프로필 편집의 경우 전자 메일 확인을 적용합니다. 가능한 값: true (기본값) 또는 false.
setting.retryLimit 아니요 사용자가 유효성 검사 기술 프로필과의 일치 여부를 확인하는 데이터의 입력을 시도할 수 있는 횟수를 제어합니다. 예를 들어 사용자는 이미 존재하는 계정으로 등록을 시도하고 제한에 도달할 때까지 계속 시도합니다. 이 메타데이터의 라이브 데모를 확인하세요.
SignUpTarget 1 아니요 등록 대상 교환 식별자입니다. 사용자가 등록 단추를 클릭하면 Azure AD B2C에서 지정된 교환 식별자를 실행합니다.
setting.showCancelButton 아니요 취소 단추를 표시합니다. 가능한 값: true (기본값) 또는 false. 이 메타데이터의 라이브 데모를 확인하세요.
setting.showContinueButton 아니요 계속 단추를 표시합니다. 가능한 값: true (기본값) 또는 false. 이 메타데이터의 라이브 데모를 확인하세요.
setting.showSignupLink 2 아니요 등록 단추를 표시합니다. 가능한 값: true (기본값) 또는 false. 이 메타데이터의 라이브 데모를 확인하세요.
setting.forgotPasswordLinkLocation 2 아니요 암호 찾기 링크를 표시합니다. 가능한 값은 레이블 바로 뒤 또는 레이블이 없는 경우 암호 입력 필드 뒤에 링크를 표시하는 AfterLabel(기본값), 암호 입력 필드 뒤에 링크를 표시하는 AfterInput, 단추 뒤의 양식 하단에 링크를 표시하는 AfterButtons 또는 암호 찾기 링크를 제거하는 None입니다. 이 메타데이터의 라이브 데모를 확인하세요.
setting.enableRememberMe 2 아니요 로그인 유지 확인란을 표시합니다. 가능한 값: true 또는 false (기본값) 이 메타데이터의 라이브 데모.
setting.inputVerificationDelayTimeInMilliseconds 3 아니요 사용자가 입력을 중지할 때까지 기다린 다음 값의 유효성을 검사하여 사용자 환경을 개선합니다. 기본값은 2000밀리초입니다. 이 메타데이터의 라이브 데모를 확인하세요.
IncludeClaimResolvingInClaimsHandling 아니요 입력 및 출력 클레임의 경우 기술 프로필에 클레임 해결이 포함되는지 여부를 지정합니다. 가능한 값: true또는 false (기본값) 기술 프로필에서 클레임 해결 프로그램을 사용하려면 이를 true로 설정합니다.
setting.forgotPasswordLinkOverride 4 아니요 실행할 암호 재설정 클레임 교환입니다. 자세한 내용은 셀프 서비스 암호 재설정을 참조하세요.
setting.enableCaptchaChallenge 아니요 CAPTCHA 챌린지 코드를 표시할지 여부를 지정합니다. 가능한 값: true 또는 false (기본값) 이 설정이 작동하려면 자체 어설션된 기술 프로필의 표시 클레임에서 CAPTCHA 표시 컨트롤을 참조해야 합니다. CAPTCHA 기능은 공개 미리 보기제공됩니다.

참고:

  1. 콘텐츠 정의 DataUri 형식 또는 .에 unifiedsspunifiedssd사용할 수 있습니다.
  2. 콘텐츠 정의 DataUri 형식 또는 .에 unifiedsspunifiedssd사용할 수 있습니다. 페이지 레이아웃 버전 1.1.0 이상.
  3. 페이지 레이아웃 버전 1.2.0 이상에서 사용할 수 있습니다.
  4. 콘텐츠 정의 DataUri 형식에 사용할 수 있습니다 unifiedssp. 페이지 레이아웃 버전 2.1.2 이상.

암호화 키

CryptographicKeys 요소는 사용되지 않습니다.