ClaimsSchema
Примечание.
В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure 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 содержит следующий атрибут.
Атрибут | Обязательное поле | Описание |
---|---|---|
Артикул | Да | Идентификатор, который используется для типа утверждения. Другие элементы могут использовать этот идентификатор в политике. |
Элемент ClaimType содержит следующие элементы.
Элемент | Вхождения | Description |
---|---|---|
DisplayName | 1:1 | Заголовок, который отображается для пользователей на различных экранах. Значение может быть локализовано. |
Тип данных | 1:1 | Тип утверждения. |
DefaultPartnerClaimTypes | 00:14 | Типы стандартных утверждений партнера для использования по указанному протоколу. Значение может быть перезаписано в свойстве PartnerClaimType, указанном в элементах InputClaim или OutputClaim. Этот элемент используется для указания имени по умолчанию для протокола. |
Маска | 00:14 | Необязательная строка знаков маскировки, которые могут применяться при отображении утверждения. Например, телефонный номер 324-232-4343 можно замаскировать как XXX-XXX-4343. |
UserHelpText | 00:14 | Описание типа утверждения, которое может помочь пользователям понять его назначение. Значение может быть локализовано. |
UserInputType | 00:14 | Тип элемента управления для ввода, который должен быть доступен пользователю, когда он вручную вводит данные утверждения для типа утверждения. См. типы элементов для ввода данных пользователем, определенные ниже на этой странице. |
AdminHelpText | 00:14 | Описание типа утверждения, которое может помочь администраторам понять его назначение. |
Ограничение | 00:14 | Ограничения значений для этого утверждения, такие как регулярное выражение или список допустимых значений. Значение может быть локализовано. |
PredicateValidationReference | 00:14 | Ссылка на элемент PredicateValidationsInput. Элементы PredicateValidationReference позволяют выполнить процесс проверки, чтобы обеспечить ввод только правильно сформированных данных. Дополнительные сведения см. в статье Элементы Predicates и PredicateValidations. |
Тип данных
Элемент DataType поддерживает следующие значения:
Тип | Описание |
---|---|
boolean | Представляет логическое значение (true или false ). |
Дата | Представляет момент времени, обычно выраженный как дата. Значение даты соответствует соглашению ISO 8601. |
dateTime | Представляет текущее время, обычно выраженное как дата и время суток. Значение даты соответствует соглашению ISO 8601 во время выполнения и преобразуется в формат времени UNIX Epoch, когда оно выдается в качестве утверждения в маркер. |
duration | Представляет интервал времени в годах, месяцах, днях, часах, минутах и секундах. Используется формат PnYnMnDTnHnMnS , где P указывает положительное значение, а N — отрицательное. nY — количество лет, за которыми следует литерал Y . nMo — количество месяцев, за которыми следует литерал Mo . nD — количество дней, за которыми следует литерал D . Примеры: P21Y — это 21 год. P1Y2Mo — один год и два месяца. P1Y2Mo5D — один год, два месяца и пять дней. P1Y2M5DT8H5M20S — один год, два месяца, пять дней, восемь часов, пять минут и двадцать секунд. |
phoneNumber | Представляет номер телефона. |
INT | Представляет число от –2 147 483 648 до 2 147 483 647 |
длинный | Представляет число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
строка | Представляет текст в виде последовательности блоков кода в кодировке UTF-16. |
stringCollection | Представляет коллекцию string . |
userIdentity | Представляет удостоверение пользователя. |
userIdentityCollection | Представляет коллекцию userIdentity . |
DefaultPartnerClaimTypes
DefaultPartnerClaimTypes может содержать следующий элемент:
Элемент | Вхождения | Description |
---|---|---|
Протокол | 1:n | Список протоколов с указанием имени стандартного типа утверждения партнера. |
Элемент Protocol содержит следующие атрибуты.
Атрибут | Обязательное поле | Description |
---|---|---|
Полное имя | Да | Имя действительного протокола, поддерживаемого Azure AD B2C. Возможные значения: OAuth1, OAuth2, SAML2, OpenIdConnect. |
PartnerClaimType | Да | Имя типа утверждения, которое будет использоваться. |
В следующем примере, когда Инфраструктура процедур идентификации взаимодействует с поставщиком удостоверений SAML2 или приложением проверяющей стороны, утверждение surname сопоставляется с http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
, а утверждения OpenIdConnect и OAuth2 сопоставляются с 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>
В результате токен JWT, выданный службой Azure AD B2C, вместо имени ClaimType surname порождает 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 |
No | Если Type имеет значение Regex , укажите регулярное выражение, которое нужно использовать. |
В примере ниже настраивается утверждение PhoneNumber с маской Simple
. Дополнительные примеры см. в демонстрации утверждения с простой маской.
<ClaimType Id="PhoneNumber">
<DisplayName>Phone Number</DisplayName>
<DataType>string</DataType>
<Mask Type="Simple">XXX-XXX-</Mask>
<UserHelpText>Your telephone number.</UserHelpText>
</ClaimType>
Инфраструктура процедур идентификации отображает номер телефона, скрывая первые шесть цифр:
В примере ниже настраивается утверждение AlternateEmail с маской Regex
. Дополнительные примеры см. в демонстрации утверждения с регулярным выражением.
<ClaimType Id="AlternateEmail">
<DisplayName>Please verify the secondary email linked to your account</DisplayName>
<DataType>string</DataType>
<Mask Type="Regex" Regex="(?<=.).(?=.*@)">*</Mask>
<UserInputType>Readonly</UserInputType>
</ClaimType>
Инфраструктура процедур идентификации отображает только первую букву адреса и имя домена электронной почты:
Ограничение
Элемент Restriction может содержать следующий атрибут.
Атрибут | Обязательное поле | Описание |
---|---|---|
MergeBehavior | No | Метод, используемый для объединения значений перечисления с типом ClaimType в родительской политике с тем же идентификатором. Используйте этот атрибут, чтобы переопределить определенное в базовой политике утверждение. Возможные значения: Append , Prepend или ReplaceAll . Значение Append — это коллекция данных, которая должна добавляться в конец коллекции, указанной в родительской политике. Значение Prepend — это коллекция данных, которая должна добавляться перед коллекцией, указанной в родительской политике. Значение ReplaceAll представляет собой набор данных, указанных в родительской политике, которые следует игнорировать. |
Элемент Restriction содержит следующие элементы.
Элемент | Вхождения | Description |
---|---|---|
Перечисление | 1:n | Варианты, которые пользователь может выбрать для утверждения в пользовательском интерфейсе, например значение в раскрывающемся списке. |
Расписание | 1:1 | Регулярное выражение для использования. |
Перечисление
Элемент Перечисление определяет варианты, которые пользователь может выбрать для утверждения в пользовательском интерфейсе, например, значение в CheckboxMultiSelect
, DropdownSingleSelect
или RadioSingleSelect
. Кроме того, можно определить и локализовать доступные параметры с помощью элемента LocalizedCollections. Чтобы найти элемент в коллекции утверждений Перечисление, используйте преобразование утверждений GetMappedValueFromLocalizedCollection.
Элемент Enumeration содержит следующие атрибуты.
Атрибут | Обязательное поле | Описание |
---|---|---|
Текст | Да | Отображаемая строка, показываемая в пользовательском интерфейсе для этого параметра. |
Значение | Да | Значение утверждения, связанное с этим вариантом. |
SelectByDefault | No | Указывает, следует ли по умолчанию выбирать этот параметр в пользовательском интерфейсе. Возможные значения: True или False. |
В примере ниже настраивается утверждение с раскрывающимся списком city со значением по умолчанию New York
. Дополнительные примеры см. в демонстрации утверждения с ограниченным перечислением.
<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>
Раскрывающийся список городов со значением по умолчанию — New York:
Расписание
Элемент Pattern может содержать следующие атрибуты.
Атрибут | Обязательное поле | Описание |
---|---|---|
RegularExpression | Да | Регулярное выражение, которому должны соответствовать утверждения такого типа, чтобы быть допустимыми. |
HelpText | No | Сообщение об ошибке для пользователей при сбое проверки регулярного выражения. |
В следующем примере создается утверждение email с проверкой входных данных регулярного выражения и текстом справки:
<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.+!#$%&'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&'+^_`{}~-]+)*@(?:[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>
Инфраструктура процедур идентификации визуализирует утверждение адреса электронной почты с помощью проверки входных данных формата электронной почты:
UserInputType
Azure AD B2C поддерживает различные типы элементов для ввода данных пользователем, такие как текстовое поле, поле пароля и раскрывающийся список, которые можно использовать при вводе данных для типа утверждения вручную. Вам необходимо указать элемент UserInputType, если вы собираете информацию от пользователя, используя самоподтвержденный технический профиль и элементы управления отображением.
Ознакомьтесь с типом данных, введенных пользователем, в живой демонстрации.
Типы данных, введенных пользователем, доступные для элемента UserInputType.
UserInputType | Тип поддерживаемого утверждения | Description |
---|---|---|
CheckboxMultiSelect | string |
Раскрывающийся список с возможностью выбора нескольких элементов. Значение утверждения представлено в виде строки с выбранными значениями, разделенными запятыми. |
DateTimeDropdown | date , dateTime |
Раскрывающиеся списки для выбора дня, месяца и года. |
DropdownSingleSelect | string |
Раскрывающийся список с возможностью выбора одного элемента. Значение утверждения является выбранным значением. |
EmailBox | string |
Поле ввода адреса электронной почты. |
Абзац | boolean , date , dateTime duration int long string |
Поле, которое показывает текст только в теге абзаца. |
Пароль | string |
Текстовое поле для ввода пароля. |
RadioSingleSelect | string |
Коллекция переключателей. Значение утверждения является выбранным значением. |
Только чтение | boolean , date , dateTime duration int long string |
Текстовое поле только для чтения. |
TextBox | boolean , , int phoneNumber string |
Однострочное текстовое поле. |
TextBox
Тип элемента для ввода данных пользователем TextBox используется для предоставления однострочного текстового поля.
<ClaimType Id="displayName">
<DisplayName>Display Name</DisplayName>
<DataType>string</DataType>
<UserHelpText>Your display name.</UserHelpText>
<UserInputType>TextBox</UserInputType>
</ClaimType>
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.+!#$%&'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&'+^_`{}~-]+)*@(?:[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>
Пароль
Тип элемента для ввода данных пользователем Password используется для записи пароля, введенного пользователем.
<ClaimType Id="password">
<DisplayName>Password</DisplayName>
<DataType>string</DataType>
<UserHelpText>Enter password</UserHelpText>
<UserInputType>Password</UserInputType>
</ClaimType>
DateTimeDropdown
Тип элемента для ввода данных пользователем DateTimeDropdown используется для предоставления набора раскрывающихся списков для выбора дня, месяца и года. С помощью элементов Predicates и PredicateValidations вы можете управлять минимальным и максимальным значениями даты. Дополнительные сведения см. в разделе Настройка диапазона дат в статье Элементы Predicates и PredicateValidations.
<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 используется для предоставления коллекции переключателей, позволяющей пользователю выбрать один из вариантов.
<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 используется для предоставления коллекции флажков, позволяющей пользователю выбрать несколько вариантов.
<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 предоставляет поле только для чтения для отображения утверждения и значения.
<ClaimType Id="membershipNumber">
<DisplayName>Membership number</DisplayName>
<DataType>string</DataType>
<UserHelpText>Your membership number (read only)</UserHelpText>
<UserInputType>Readonly</UserInputType>
</ClaimType>
Абзац
Тип элемента для ввода данных пользователем Paragraph используется для предоставления поля, которое отображает текст только в теге параграфа. Например, <p>текст</p>. Элемент OutputClaim
самоподтвержденного технического профиля, относящийся к типу данных, введенных пользователем, Paragraph, по умолчанию должен присваивать атрибуту Required
значение false
. Этот тип ввода пользователя поддерживается только в самоутверждаемых макетах страниц. Унифицированные страницы входа и регистрации (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>