ClaimsSchema

참고 항목

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

ClaimsSchema 요소는 정책의 일부로 참조할 수 있는 클레임 형식을 정의합니다. 클레임 스키마에서 클레임을 선언합니다. 클레임은 이름, 성, 표시 이름, 전화 번호 등이 될 수 있습니다. ClaimsSchema 요소에는 ClaimType 요소 목록이 포함됩니다. ClaimType 요소에는 Id 특성(클레임 이름)이 포함됩니다.

<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="Id">
      <DisplayName>Surname</DisplayName>
      <DataType>string</DataType>
      <DefaultPartnerClaimTypes>
        <Protocol Name="OAuth2" PartnerClaimType="family_name" />
        <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
        <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
      </DefaultPartnerClaimTypes>
      <UserHelpText>Your surname (also known as family name or last name).</UserHelpText>
      <UserInputType>TextBox</UserInputType>

ClaimType

ClaimType 요소에는 다음과 같은 특성이 포함됩니다.

특성 필수 설명
ID 클레임 형식에 사용되는 식별자입니다. 다른 요소는 정책에서 이 식별자를 사용할 수 있습니다.

ClaimType 요소에는 다음 요소가 포함됩니다.

요소 발생 설명
DisplayName 1:1 다양한 화면에서 사용자에게 표시되는 제목입니다. 값을 지역화수 있습니다.
DataType 1:1 클레임의 형식입니다.
DefaultPartnerClaimTypes 0:1 지정된 프로토콜에 사용할 파트너 기본 클레임 형식입니다. InputClaim 또는 OutputClaim 요소에 지정된 PartnerClaimType에서 값을 덮어쓸 수 있습니다. 이 요소를 사용하여 프로토콜의 기본 이름을 지정합니다.
마스크 0:1 클레임을 표시할 때 적용할 수 있는 마스킹 문자의 선택적 문자열입니다. 예를 들어 전화 번호 324-232-4343은 XXX-XXX-4343으로 마스킹할 수 있습니다.
UserHelpText 0:1 사용자가 용도를 이해하는 데 도움이 될 수 있는 클레임 유형에 대한 설명입니다. 값을 지역화수 있습니다.
UserInputType 0:1 클레임 형식의 클레임 데이터를 수동으로 입력할 때 사용자에게 제공해야 하는 입력 컨트롤 유형입니다. 이 페이지의 뒷부분에 정의된 사용자 입력 유형을 참조하세요.
AdminHelpText 0:1 관리자가 클레임의 용도를 파악하는 데 도움이 될 수 있는 클레임 형식의 설명입니다.
제한 0:1 정규식(Regex) 또는 허용 가능한 값 목록과 같이 이 클레임에 대한 값 제한입니다. 값을 지역화수 있습니다.
PredicateValidationReference 0:1 PredicateValidationsInput 요소에 대한 참조입니다. PredicateValidationReference 요소를 사용하면 올바른 형식의 데이터만 입력되도록 유효성 검사 프로세스를 수행할 수 있습니다. 자세한 내용은 조건자를 참조 하세요.

DataType

DataType 요소는 다음 값을 지원합니다.

Type 설명
부울 값 부울(true 또는 false) 값을 나타냅니다.
date 일반적으로 하루의 날짜로 표현되는 인스턴트 시간을 나타냅니다. 날짜 값은 ISO 8601 규칙을 따릅니다.
dateTime 일반적으로 날짜와 시간으로 표현된 시간의 한 순간을 나타냅니다. 날짜 값은 런타임 중에 ISO 8601 규칙을 따르며 토큰에 클레임으로 발급될 때 UNIX epoch 시간으로 변환됩니다.
duration 년, 월, 일, 시, 분 및 초의 시간 간격을 나타냅니다. 형식은 PnYnMnDTnHnMnS입니다. 여기서 P는 양수 값을, N은 음수 값을 나타냅니다. nY은 리터럴 뒤에 오는 연 수입니다 Y. nMo 은 리터럴 Mo이 뒤에 잇는 월 수입니다. nD은 리터럴 뒤에 오는 일 수입니다 D. 예: P21Y 21년을 나타냅니다. P1Y2Mo 는 1년, 2개월을 나타냅니다. P1Y2Mo5D 는 1년, 2개월, 5일을 나타냅니다. P1Y2M5DT8H5M20S은 1년 2개월 5일 8시간 5분 20초를 나타냅니다.
phoneNumber 전화 번호를 나타냅니다.
int -2,147,483,648과 2,147,483,647 사이의 숫자를 나타냅니다.
long -9,223,372,036,854,775,808에서 9,223,372,036,854,775,807 사이의 숫자를 나타냅니다.
string 텍스트를 UTF-16 코드 단위의 시퀀스로 나타냅니다.
stringCollection string의 컬렉션을 나타냅니다.
userIdentity 사용자 ID를 나타냅니다.
userIdentityCollection userIdentity의 컬렉션을 나타냅니다.

DefaultPartnerClaimTypes

DefaultPartnerClaimTypes는 다음 요소를 함할 수 있습니다.

요소 발생 설명
프로토콜 1:n 기본 파트너 클레임 유형 이름이 있는 프로토콜 목록입니다.

Protocol 요소에는 다음 특성이 포함됩니다.

특성 필수 설명
입력 Azure AD B2C에서 지원하는 유효한 프로토콜의 이름입니다. 가능한 값은 다음과 같습니다. OAuth1, OAuth2, SAML2, OpenIdConnect
PartnerClaimType 사용할 클레임 유형 이름입니다.

다음 예제에서는 ID 경험 프레임워크가 SAML2 ID 공급자 또는 신뢰 당사자 애플리케이션 과 상호 작용할 때 성 클레임이 OpenIdConnect 및 OAuth2와 함께 매핑 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname됩니다 family_name.

<ClaimType Id="surname">
  <DisplayName>Surname</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
    <Protocol Name="OAuth2" PartnerClaimType="family_name" />
    <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
    <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
  </DefaultPartnerClaimTypes>
</ClaimType>

결과적으로 Azure AD B2C에서 발급한 JWT 토큰은 ClaimType 이름 대신 내보내게 됩니다family_name.

{
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  "auth_time": 1535013501,
  "given_name": "David",
  "family_name": "Williams",
  "name": "David Williams",
}

마스크

Mask 요소에는 다음과 같은 특성이 포함됩니다.

특성 필수 설명
Type 클레임 마스크의 형식입니다. 가능한 값은 Simple 또는 Regex입니다. Simple 값은 문자열 클레임의 앞부분에 단순 텍스트 마스크가 적용됨을 나타냅니다. 값은 Regex 정규식이 문자열 클레임 전체에 적용됨을 나타냅니다. Regex 값을 지정하는 경우에는 사용할 정규식과 함께 선택적 특성도 정의해야 합니다.
Regex 아니요 설정된 Regex경우 Type 사용할 정규식을 지정합니다.

다음 예제에서는 Simple 마스크를 사용하여 PhoneNumber 클레임을 구성합니다. 더 많은 샘플을 보려면 클레임 단순 마스크 라이브 데모를 확인하세요.

<ClaimType Id="PhoneNumber">
  <DisplayName>Phone Number</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Simple">XXX-XXX-</Mask>
  <UserHelpText>Your telephone number.</UserHelpText>
</ClaimType>

ID 경험 프레임워크는 처음 6자리 숫자를 숨기면서 전화 번호를 렌더링합니다.

브라우저에 표시된 전화번호 클레임(첫 6자리 숫자가 X로 마스킹되어 있음)

다음 예제에서는 Regex 마스크를 사용하여 AlternateEmail 클레임을 구성합니다. 더 많은 샘플을 보려면 Regex 마스크 라이브 데모를 확인하세요.

<ClaimType Id="AlternateEmail">
  <DisplayName>Please verify the secondary email linked to your account</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Regex" Regex="(?&lt;=.).(?=.*@)">*</Mask>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

ID 환경 프레임워크는 전자 메일 주소의 첫 문자와 전자 메일 도메인 이름만 렌더링합니다.

별표로 마스킹된 문자가 있는 브라우저에 표시된 전자 메일 클레임

제한

Restriction 요소에는 다음 특성이 포함될 수 있습니다.

특성 필수 설명
MergeBehavior 아니요 동일한 식별자를 사용하여 부모 정책에서 ClaimType과 열거형 값을 병합하는 데 사용되는 메서드입니다. 기본 정책에 지정된 클레임을 덮어쓰는 경우 이 특성을 사용합니다. 가능한 값은 Append, Prepend 또는 ReplaceAll입니다. 값은 Append 부모 정책에 지정된 컬렉션의 끝에 추가해야 하는 데이터 컬렉션입니다. 값은 Prepend 부모 정책에 지정된 컬렉션 앞에 추가해야 하는 데이터 컬렉션입니다. ReplaceAll 값은 상위 정책에 지정되어 있는 무시해야 하는 데이터 컬렉션입니다.

Restriction 요소에는 다음과 같은 요소가 포함됩니다.

요소 발생 설명
열거형 1:n 사용자가 클레임을 선택하는 데 사용할 수 있는 사용자 인터페이스의 옵션(예: 드롭다운의 값)입니다.
패턴 1:1 사용할 정규식입니다.

열거형

열거형 요소는 사용자가 사용자 인터페이스의 클레임에 대해 선택할 수 있는 옵션(예: 값CheckboxMultiSelectDropdownSingleSelect, 또는 RadioSingleSelect. 또는 LocalizedCollections 요소를 사용하여 사용 가능한 옵션을 정의하고 지역화할 수 있습니다 . 클레임 열거형 컬렉션에서 항목을 조회하려면 GetMappedValueFromLocalizedCollection 클레임 변환을 사용합니다.

열거형 요소에는 다음 특성이 포함됩니다.

특성 필수 설명
Text 이 옵션에 대해 사용자 인터페이스에서 사용자에게 표시되는 표시 문자열입니다.
이 옵션 선택과 연결된 클레임 값입니다.
SelectByDefault 아니요 UI에서 이 옵션을 기본적으로 선택해야 하는지 여부를 나타냅니다. 가능한 값: True 또는 False입니다.

다음 예제에서는 기본값을 New York로 설정하여 city 드롭다운 목록 클레임을 구성합니다. 더 많은 샘플을 보려면 클레임 제한 열거형 라이브 데모를 확인하세요.

<ClaimType Id="city">
  <DisplayName>city where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

기본값이 뉴욕으로 설정된 드롭다운 도시 목록:

브라우저에서 렌더링되고 기본값을 표시하는 드롭다운 컨트롤

패턴

Pattern 요소는 다음 특성을 포함할 수 있습니다.

특성 필수 설명
RegularExpression 이 형식의 클레임이 유효하려면 일치해야 하는 정규식입니다.
HelpText 아니요 정규식 검사가 실패하는 경우 사용자에 대한 오류 메시지입니다.

다음 예제에서는 정규식 입력 유효성 검사 및 도움말 텍스트를 사용하여 이메일 클레임을 구성합니다.

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
  <Protocol Name="OpenIdConnect" PartnerClaimType="email" />
  </DefaultPartnerClaimTypes>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

ID 환경 프레임워크는 이메일 형식 입력 유효성 검사를 사용하여 이메일 주소 클레임을 렌더링합니다.

regex 제한으로 트리거된 오류 메시지를 보여 주는 TextBox

UserInputType

Azure AD B2C는 클레임 형식의 클레임 데이터를 수동으로 입력할 때 사용할 수 있는 텍스트 상자, 암호, 드롭다운 목록 등의 다양한 사용자 입력 유형을 지원합니다. 자체 어설션된 기술 프로필 및 디스플레이 컨트롤을 사용하여 사용자로부터 정보를 수집할 때 UserInputType을 지정해야 합니다.

사용자 입력 형식의 Live 데모를 확인합니다.

Userinputtype 요소를 사용 가능한 사용자 입력 유형:

UserInputType 지원되는 ClaimType 설명
CheckboxMultiSelect string 다중 선택 드롭다운 상자 클레임 값은 선택한 값의 쉼표 구분 기호 문자열로 표시됩니다.
DateTimeDropdown date, dateTime 일, 월 및 연도를 선택하기 위한 드롭다운입니다.
DropdownSingleSelect string 단일 선택 드롭다운 상자입니다. 클레임 값은 선택한 값입니다.
EmailBox string 전자 메일 입력 필드입니다.
단락 boolean, date, dateTime, duration, int, longstring 단락 태그에만 텍스트를 표시하는 필드입니다.
암호 string 암호 텍스트 상자.
RadioSingleSelect string 라디오 단추의 컬렉션입니다. 클레임 값은 선택한 값입니다.
읽기전용 boolean, date, dateTime, duration, int, longstring 읽기 전용 텍스트 상자입니다.
TextBox boolean, int, phoneNumberstring 한 줄 텍스트 상자.

TextBox

TextBox 사용자 입력 형식은 한 줄 텍스트 상자를 제공하는 데 사용됩니다.

클레임 유형에 지정된 속성을 보여 주는 TextBox

<ClaimType Id="displayName">
  <DisplayName>Display Name</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your display name.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

EmailBox

EmailBox 사용자 입력 유형은 기본 전자 메일 입력 필드를 제공하는 데 사용됩니다.

클레임 유형에 지정된 속성을 보여 주는 EmailBox

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>EmailBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

암호

암호 사용자 입력 형식은 사용자가 입력한 암호를 기록하는 데 사용됩니다.

암호와 함께 클레임 유형 사용

<ClaimType Id="password">
  <DisplayName>Password</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Enter password</UserHelpText>
  <UserInputType>Password</UserInputType>
</ClaimType>

DateTimeDropdown

DateTimeDropdown 사용자 입력 형식은 일, 월 및 연도를 선택하는 드롭다운 집합을 제공하는 데 사용됩니다. Predicates 및 PredicateValidations 요소를 사용하여 최소 및 최대 날짜 값을 제어할 수 있습니다. 자세한 내용은 조건자 및 PredicateValidations의 날짜 범위 구성 섹션을 참조하세요.

datetimedropdown과 함께 클레임 유형 사용

<ClaimType Id="dateOfBirth">
  <DisplayName>Date Of Birth</DisplayName>
  <DataType>date</DataType>
  <UserHelpText>The date on which you were born.</UserHelpText>
  <UserInputType>DateTimeDropdown</UserInputType>
</ClaimType>

RadioSingleSelect

RadioSingleSelect 사용자 입력 형식은 사용자가 하나의 옵션을 선택할 수 있도록 하는 라디오 단추 컬렉션을 제공하는 데 사용됩니다.

radiodsingleselect에서 클레임 유형 사용

<ClaimType Id="color">
  <DisplayName>Preferred color</DisplayName>
  <DataType>string</DataType>
  <UserInputType>RadioSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Blue" Value="Blue" SelectByDefault="false" />
    <Enumeration Text="Green " Value="Green" SelectByDefault="false" />
    <Enumeration Text="Orange" Value="Orange" SelectByDefault="true" />
  </Restriction>
</ClaimType>

DropdownSingleSelect 사용자 입력 유형은 사용자가 옵션 하나를 선택할 수 있는 드롭다운 상자를 제공하는 데 사용됩니다.

dropdownsingleselect와 함께 클레임 유형 사용

<ClaimType Id="city">
  <DisplayName>City where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

CheckboxMultiSelect

CheckboxMultiSelect 사용자 입력 유형은 사용자가 여러 옵션을 선택할 수 있는 확인란 모음을 제공하는 데 사용됩니다.

checkboxmultiselect에서 클레임 유형 사용

<ClaimType Id="languages">
  <DisplayName>Languages you speak</DisplayName>
  <DataType>string</DataType>
  <UserInputType>CheckboxMultiSelect</UserInputType>
  <Restriction>
    <Enumeration Text="English" Value="English" SelectByDefault="true" />
    <Enumeration Text="France " Value="France" SelectByDefault="false" />
    <Enumeration Text="Spanish" Value="Spanish" SelectByDefault="false" />
  </Restriction>
</ClaimType>

읽기전용

Readonly 사용자 입력 형식은 클레임 및 값을 표시하는 읽기 전용 필드를 제공하는 데 사용됩니다.

readonly가 포함된 클레임 형식 사용

<ClaimType Id="membershipNumber">
  <DisplayName>Membership number</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your membership number (read only)</UserHelpText>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

단락

단락 사용자 입력 형식은 단락 태그에만 텍스트를 표시하는 필드를 제공하는 데 사용됩니다. 예를 들어 <p>text</p>를 사용할 수 있습니다. 자체 어설션된 기술 프로필의 단락 사용자 입력 형식 OutputClaim 은 특성 false (기본값)을 Required 설정해야 합니다. 이 사용자 입력 형식은 자체 어설션된 페이지 레이아웃에서만 지원됩니다. 통합 로그인 및 등록 페이지(unifiedssp)가 제대로 표시되지 않을 수 있습니다.

단락과 함께 클레임 형식 사용

<ClaimType Id="responseMsg">
  <DisplayName>Error message: </DisplayName>
  <DataType>string</DataType>
  <AdminHelpText>A claim responsible for holding response messages to send to the relying party</AdminHelpText>
  <UserHelpText>A claim responsible for holding response messages to send to the relying party</UserHelpText>
  <UserInputType>Paragraph</UserInputType>
</ClaimType>