Преобразования утверждений строк
В этой статье приведены примеры использования преобразований утверждений строк схемы Identity Experience Framework в Azure Active Directory B2C (Azure AD B2C). Дополнительные сведения см. в статье о преобразовании утверждений.
AssertStringClaimsAreEqual
Сопоставляет два утверждения и создает исключение, если они не равны, в соответствии с указанными для сравнения элементами inputClaim1, inputClaim2 и stringComparison.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputClaim1 | строка | Тип первого утверждения, которое необходимо сравнить. |
InputClaim | inputClaim2 | строка | Тип второго утверждения, которое необходимо сравнить. |
InputParameter | stringComparison | строка | сравнение строк, одно из значений: Ordinal, OrdinalIgnoreCase. |
Преобразование строк AssertStringClaimsAreEqual всегда выполняется из технического профиля проверки, вызываемого с помощью самоподтвержденного технического профиля, или DisplayControl. Метаданные UserMessageIfClaimsTransformationStringsAreNotEqual
самоподтвержденного технического профиля позволяют управлять сообщением об ошибке, представленным пользователю. Сообщения об ошибках можно локализовать.
Пример AssertStringClaimsAreEqual
С помощью этого преобразования можно убедиться, что два утверждения имеют одинаковые значения. В противном случае выдается сообщение об ошибке. В следующем примере проверяется, равно ли утверждение strongAuthenticationEmailAddress утверждению email. В противном случае выдается сообщение об ошибке.
<ClaimsTransformation Id="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="strongAuthenticationEmailAddress" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
</InputParameters>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim1: someone@contoso.com.
- inputClaim2: someone@outlook.com.
- Входные параметры:
- stringComparison: ordinalIgnoreCase.
- Результат: возникла ошибка.
Вызов преобразования утверждений AssertStringClaimsAreEqual
Технический профиль проверки login-NonInteractive вызывает преобразование утверждений AssertEmailAndStrongAuthenticationEmailAddressAreEqual.
<TechnicalProfile Id="login-NonInteractive">
...
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
</OutputClaimsTransformations>
</TechnicalProfile>
Самоподтвержденный технический профиль вызывает технический профиль проверки login-NonInteractive.
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email">
<Metadata>
<Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">Custom error message the email addresses you provided are not the same.</Item>
</Metadata>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="login-NonInteractive" />
</ValidationTechnicalProfiles>
</TechnicalProfile>
BuildUri
Создает URI одноразового пароля с ограниченным сроком действия (TOTP). Универсальный код ресурса (URI) представляет собой сочетание уникального идентификатора пользователя, например адреса электронной почты, и секретного ключа. Затем этот URI преобразуется в QR-код, представляемый пользователю. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | path | строка | Уникальный идентификатор пользователя, например адрес электронной почты, имя пользователя или номер телефона. |
InputClaim | query.secret | строка | Секретный ключ TOTP. |
InputParameter | scheme | строка | Часть схемы в URI. Например, otpauth . |
InputParameter | host | строка | Часть схемы в URI. Например, totp . |
InputParameter | query.issuer | строка | Часть имени издателя в URI. Например, {AuthenticatorIssuer} . |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. |
Пример BuildUri
Следующее преобразование утверждений создает URI TOTP, который будет отображаться в формате QR-кода или глубокой ссылки.
<ClaimsTransformation Id="CreateUriString" TransformationMethod="BuildUri">
<InputClaims>
<InputClaim ClaimTypeReferenceId="uriLabel" TransformationClaimType="path" />
<InputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="query.secret" />
</InputClaims>
<InputParameters>
<InputParameter Id="scheme" DataType="string" Value="otpauth" />
<InputParameter Id="host" DataType="string" Value="totp" />
<InputParameter Id="query.issuer" DataType="string" Value="{AuthenticatorIssuer}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="qrCodeContent" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- path: emily@fabrikam.com
- query.secret:
fay2lj7ynpntjgqa
- Входные параметры:
- scheme:
otpauth
- host:
totp
- query.issuer:
{AuthenticatorIssuer}
- scheme:
- Выходные утверждения:
- outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
.
- outputClaim:
ChangeCase
Изменяет предоставленное утверждение в нижний или верхний регистр в зависимости от оператора. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputClaim1 | строка | Утверждение, которое необходимо изменить. |
InputParameter | toCase | строка | Одно из следующих значений: LOWER или UPPER . |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. |
Пример ChangeCase
Следующее преобразование утверждения преобразует регистр утверждения электронной почты в нижний.
<ClaimsTransformation Id="ChangeToLower" TransformationMethod="ChangeCase">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
</InputClaims>
<InputParameters>
<InputParameter Id="toCase" DataType="string" Value="LOWER" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- email: SomeOne@contoso.com.
- Входные параметры:
- toCase: LOWER.
- Выходные утверждения:
- email: someone@contoso.com.
CompareClaims
Определяет, равно ли одно строковое утверждение другому. Результатом является новое логическое утверждение со значением true
или false
. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputClaim1 | строка | Тип первого утверждения, которое необходимо сравнить. |
InputClaim | inputClaim2 | строка | Тип второго утверждения, которое необходимо сравнить. |
InputParameter | оператор | строка | Возможные значения: EQUAL или NOT EQUAL . |
InputParameter | ignoreCase | строка | Указывает, следует ли в этом сравнении игнорировать регистр сравниваемых строк. |
outputClaim | outputClaim | boolean | Утверждение, которое создается после вызова этого преобразования утверждений. |
Пример CompareClaims
Используйте это преобразование, чтобы проверить, равно ли одно утверждение другому. Следующее преобразование утверждений проверяет, равно ли значение утверждения email утверждению Verified.Email.
<ClaimsTransformation Id="CheckEmail" TransformationMethod="CompareClaims">
<InputClaims>
<InputClaim ClaimTypeReferenceId="Email" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="Verified.Email" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
<InputParameter Id="ignoreCase" DataType="string" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="SameEmailAddress" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim1: someone@contoso.com.
- inputClaim2: someone@outlook.com.
- Входные параметры:
- operator: NOT EQUAL
- ignoreCase: true.
- Выходные утверждения:
- outputClaim: true.
CompareClaimToValue
Определяет, равно ли значение утверждения значению входного параметра. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputClaim1 | строка | Тип утверждения, которое необходимо сравнить. |
InputParameter | оператор | строка | Возможные значения: EQUAL или NOT EQUAL . |
InputParameter | compareTo | строка | Сравнение строк, одно из значений, то есть строка, с которой должны сравниваться входные значения утверждений: Ordinal, OrdinalIgnoreCase. |
InputParameter | ignoreCase | строка | Указывает, следует ли в этом сравнении игнорировать регистр сравниваемых строк. |
outputClaim | outputClaim | boolean | Утверждение, которое создается после вызова этого преобразования утверждений. |
Пример CompareClaimToValue
С помощью этого преобразования можно проверить, равно ли утверждение указанному значению. Например, следующее преобразование утверждений проверяет, равно ли значение утверждения termsOfUseConsentVersion значению V2
.
<ClaimsTransformation Id="IsTermsOfUseConsentRequiredForVersion" TransformationMethod="CompareClaimToValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim1" />
</InputClaims>
<InputParameters>
<InputParameter Id="compareTo" DataType="string" Value="V2" />
<InputParameter Id="operator" DataType="string" Value="NOT EQUAL" />
<InputParameter Id="ignoreCase" DataType="string" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentRequired" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim1: v1.
- Входные параметры:
- compareTo: V2
- operator: NOT EQUAL
- ignoreCase: true.
- Выходные утверждения:
- outputClaim: true.
CopyClaimIfPredicateMatch
Копирует значение одного утверждения в другое, если значение входного утверждения совпадает с выходным предикатом исходящего утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип утверждения, который необходимо скопировать. |
outputClaim | outputClaim | строка | Тип утверждения, который создается после вызова этого преобразования утверждений. Значение входного утверждения проверяется по предикату этого утверждения. |
Пример CopyClaimIfPredicateMatch
Следующий пример пытается скопировать значение утверждения signInName в утверждение phoneNumber. В этом примере значение не будет скопировано. Утверждение signInName отличается от ожидаемого формата (номера телефона). Полный пример см. в разделе Политика начального пакета для входа в систему по адресу электронной почты или номеру телефона.
<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: bob@contoso.com.
- Выходные утверждения:
- outputClaim: выходное утверждение не будет изменено из исходного значения.
Пример CopyClaimIfPredicateMatch, который соответствует предикату
В этом примере преобразование утверждения скопирует значение. Утверждение signInName имеет правильный формат (номер телефона).
- Входные утверждения:
- inputClaim: +11234567890
- Выходные утверждения:
- outputClaim: +11234567890
CreateOtpSecret
Создает строковое утверждение TOTP. Выходные данные этого преобразования утверждений — секрет TOTP, который позже сохраняется в учетной записи пользователя Azure AD B2C и используется совместно с приложением Microsoft Authenticator. Приложение проверки подлинности использует этот ключ для создания кода TOTP, который пользователю потребуется для выполнения многофакторной проверки подлинности. Ваша политика использует этот ключ для проверки кода TOTP, предоставленного пользователем.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений, с созданным значением кода TOTP. |
Пример CreateOtpSecret
Следующее преобразование утверждений создает секрет для многофакторной проверки подлинности TOTP.
<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Выходные утверждения:
- outputClaim:
hmlcmd4ph6fph64c
.
- outputClaim:
CreateRandomString
Создает случайную строку с помощью генератора случайных чисел. Если тип генератора случайных чисел — integer
, при необходимости можно указать параметр начального значения и максимальное число. Необязательный параметр формата строки позволяет форматировать выходные данные, а необязательный параметр Base64 указывает, соответствуют ли выходные данные randomGeneratorType [идентификатор GUID, целое число] outputClaim (строка) в кодировке Base64.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputParameter | randomGeneratorType | строка | Указывает случайное значение, которое необходимо создать: GUID (глобальный уникальный идентификатор) или INTEGER (число). |
InputParameter | stringFormat | строка | [Необязательно.] Формат случайного значения. |
InputParameter | base64 | boolean | [Необязательно.] Преобразование случайного значения в Base64. Если применяется формат строки, значение после формата строки кодируется в Base64. |
InputParameter | maximumNumber | INT | [Необязательно.] Только для типа randomGeneratorType INTEGER . Укажите максимальное число. |
InputParameter | seed | INT | [Необязательно.] Только для типа randomGeneratorType INTEGER . Укажите начальное значение для случайного значения. Примечание. Такое же начальное значение обеспечивает такую же последовательность случайных чисел. |
outputClaim | outputClaim | строка | Утверждение, которое будет создано после вызова этого преобразования утверждений. Случайное значение. |
Пример CreateRandomString
В следующем примере создается глобальный уникальный идентификатор. С помощью этого преобразования утверждений создается случайное имя участника-пользователя.
<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные параметры:
- randomGeneratorType: глобальный уникальный идентификатор.
- Выходные утверждения:
- outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc.
Пример CreateRandomString, который создает числовое значение
В следующем примере создается случайное целое число от 0 до 1000. Значение форматируется в формат OTP_{случайное значение}.
<ClaimsTransformation Id="SetRandomNumber" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="INTEGER" />
<InputParameter Id="maximumNumber" DataType="int" Value="1000" />
<InputParameter Id="stringFormat" DataType="string" Value="OTP_{0}" />
<InputParameter Id="base64" DataType="boolean" Value="false" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="randomNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные параметры:
- randomGeneratorType: INTEGER.
- maximumNumber: 1000.
- stringFormat: OTP_{0}.
- Base64: false.
- Выходные утверждения:
- outputClaim: OTP_853.
CreateStringClaim
Создает строковое утверждение на основе предоставленного входного параметра в преобразовании. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputParameter | значение | строка | Строка, которую необходимо задать. Этот входной параметр поддерживает выражения преобразования строковых утверждений. |
outputClaim | createdClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений, со значением, указанным во входном параметре. |
Пример CreateStringClaim
Следующее преобразование утверждений создает строковое значение с условиями предоставления услуг.
<ClaimsTransformation Id="CreateTermsOfService" TransformationMethod="CreateStringClaim">
<InputParameters>
<InputParameter Id="value" DataType="string" Value="Contoso terms of service..." />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TOS" TransformationClaimType="createdClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входной параметр:
- value: условия предоставления услуг компании Contoso...
- Выходные утверждения:
- createdClaim: утверждение TOS содержит значение "Условия предоставления услуг компании Contoso...".
FormatLocalizedString
Форматирование нескольких утверждений в соответствии с предоставленной локализованной строкой формата. Это преобразование использует метод C# String.Format
. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaims | строка | Коллекция входных утверждений, которые действуют как параметры в строковом формате {0}, {1}, {2}. | |
InputParameter | stringFormatId | строка | StringId локализованной строки. |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. |
Примечание.
Число входных утверждений, которые можно указать, не ограничено, но максимальная длина отформатируемой строки составляет 4000.
Чтобы использовать преобразование утверждений FormatLocalizedString, выполните следующие действия.
- Определите строку локализации и свяжите ее с самоподтвержденным техническим профилем.
- Для
ElementType
элементаLocalizedString
необходимо задать значениеFormatLocalizedStringTransformationClaimType
. StringId
— это уникальный определяемый вами идентификатор, который вы используете позже в преобразовании утвержденийstringFormatId
.- В преобразовании утверждений укажите список утверждений, которые должны быть заданы в локализованной строке. Затем присвойте значение
stringFormatId
свойствуStringId
из локализованного строкового элемента. - В самоподтвержденном техническом профиле или элементе управления отображением преобразования входных или выходных утверждений укажите ссылку на преобразование утверждений.
Пример FormatLocalizedString
В следующем примере создается сообщение об ошибке, если учетная запись уже существует в каталоге. В этом примере определяются локализованные строки для английского (по умолчанию) и испанского языка.
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedStrings>
<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">The email '{0}' is already an account in this organization. Click Next to sign in with that account.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedStrings>
<LocalizedString ElementType="FormatLocalizedStringTransformationClaimType" StringId="ResponseMessge_EmailExists">Este correo electrónico "{0}" ya es una cuenta de esta organización. Haga clic en Siguiente para iniciar sesión con esa cuenta.</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
</Localization>
Преобразование утверждений создает ответное сообщение на основе локализованной строки. Сообщение содержит адрес электронной почты пользователя, встроенный в локализованную строку ResponseMessge_EmailExists.
<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: sarah@contoso.com.
- Входные параметры:
- stringFormat: ResponseMessge_EmailExists
- Выходные утверждения:
- outputClaim: адрес электронной почты sarah@contoso.com уже является учетной записью в этой организации. Нажмите кнопку "Далее", чтобы войти в систему с помощью этой учетной записи.
FormatStringClaim
Форматирует утверждения в соответствии с указанной строкой формата. Это преобразование использует метод C# String.Format
. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Утверждение, которое выступает в качестве параметра {0} формата строки. |
InputParameter | stringFormat | строка | Формат строки, включая параметр {0}. Этот входной параметр поддерживает выражения преобразования строковых утверждений. |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. |
Примечание.
Максимальный допустимый размер строкового формата — 4000.
Пример FormatStringClaim
Используйте это преобразование утверждений для форматирования любой строки с одним параметром {0}. В следующем примере создается userPrincipalName. Технические профили всех поставщиков удостоверений в социальных сетях, такие как Facebook-OAUTH
, вызывают CreateUserPrincipalName для создания userPrincipalName.
<ClaimsTransformation Id="CreateUserPrincipalName" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="cpim_{0}@{RelyingPartyTenantId}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="userPrincipalName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9.
- Входные параметры:
- stringFormat: cpim_{0}@{RelyingPartyTenantId}
- Выходные утверждения:
- outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com.
FormatStringMultipleClaims
Форматирует два утверждения в соответствии с указанным форматом строки. Это преобразование использует метод C# String.Format
. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputClaim1 | строка | Утверждение, которое выступает в качестве параметра {0} формата строки. |
InputClaim | inputClaim2 | строка | Утверждение, которое выступает в качестве параметра {1} формата строки. |
InputParameter | stringFormat | строка | Формат строки, включая параметры {0} и {1}. Этот входной параметр поддерживает выражения преобразования строковых утверждений. |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. |
Примечание.
Максимальный допустимый размер строкового формата — 4000.
Пример FormatStringMultipleClaims
Используйте это преобразование утверждений для форматирования любой строки с двумя параметрами: {0} и {1}. В следующем примере создается displayName с указанным форматом:
<ClaimsTransformation Id="CreateDisplayNameFromFirstNameAndLastName" TransformationMethod="FormatStringMultipleClaims">
<InputClaims>
<InputClaim ClaimTypeReferenceId="givenName" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="surName" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat" DataType="string" Value="{0} {1}" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim1: Joe.
- inputClaim2: Fernando.
- Входные параметры:
- stringFormat: {0}{1}.
- Выходные утверждения:
- outputClaim: Joe Fernando.
GetLocalizedStringsTransformation
Копирует локализованные строки в утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
outputClaim | Имя локализованной строки | строка | Список типов утверждений, которые создаются после вызова этого преобразования утверждений. |
Чтобы использовать утверждения GetLocalizedStringsTransformation, выполните следующие действия.
Определите строку локализации для вашего определения содержимого, например
api.selfasserted
.Для
ElementType
элементаLocalizedString
необходимо задать значениеGetLocalizedStringsTransformationClaimType
.StringId
— это уникальный определяемый вами идентификатор, который вы используете позже в преобразовании утверждений.В преобразовании утверждений укажите список утверждений, которые должны быть заданы в локализованной строке.
ClaimTypeReferenceId
— это ссылка на утверждение, уже определенная в разделе ClaimsSchema файла политики.TransformationClaimType
— это имя локализованной строки, определенное вStringId
элементаLocalizedString
.В преобразовании самоподтверждающихся утверждений или преобразовании утверждений технического профиля, укажите ссылку на ваши преобразования утверждений.
Свяжите технический профиль с определением содержимого, например
api.selfasserted
. В следующем примере показано, как связать технический профиль сapi.selfasserted
определением содержимого.<Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> </Metadata>
На следующей схеме показано, как настроить преобразование утверждений с помощью элементов локализации:
Пример GetLocalizedStringsTransformation
В следующем примере выполняется поиск темы сообщения электронной почты, текста, кодового сообщения и подписи сообщения из локализованных строк. Эти утверждения позже используются настраиваемым шаблоном проверки электронной почты.
Определите локализованные строки для английского языка (по умолчанию) и испанского.
<Localization Enabled="true">
<SupportedLanguages DefaultLanguage="en" MergeBehavior="Append">
<SupportedLanguage>en</SupportedLanguage>
<SupportedLanguage>es</SupportedLanguage>
</SupportedLanguages>
<LocalizedResources Id="api.localaccountsignup.en">
<LocalizedStrings>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Contoso account email verification code</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Thanks for verifying your account!</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Your code is</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Sincerely</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
<LocalizedResources Id="api.localaccountsignup.es">
<LocalizedStrings>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_subject">Código de verificación del correo electrónico de la cuenta de Contoso</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_message">Gracias por comprobar la cuenta de </LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_code">Su código es</LocalizedString>
<LocalizedString ElementType="GetLocalizedStringsTransformationClaimType" StringId="email_signature">Atentamente</LocalizedString>
</LocalizedStrings>
</LocalizedResources>
</Localization>
Преобразование утверждений задает значение типа утверждения subject со значением StringId
email_subject.
<ClaimsTransformation Id="GetLocalizedStringsForEmail" TransformationMethod="GetLocalizedStringsTransformation">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="subject" TransformationClaimType="email_subject" />
<OutputClaim ClaimTypeReferenceId="message" TransformationClaimType="email_message" />
<OutputClaim ClaimTypeReferenceId="codeIntro" TransformationClaimType="email_code" />
<OutputClaim ClaimTypeReferenceId="signature" TransformationClaimType="email_signature" />
</OutputClaims>
</ClaimsTransformation>
- Выходные утверждения:
- тема: код проверки электронной почты учетной записи Contoso
- сообщение: спасибо за проверку учетной записи!
- codeIntro: код — это ваш код
- подпись: Искренне
GetMappedValueFromLocalizedCollection
Сопоставляет элемент из коллекции Ограничения входного утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | mapFromClaim | строка | Утверждение, содержащее текст, поиск которого будет выполняться в утверждениях restrictionValueClaim с коллекцией Restriction. |
outputClaim | restrictionValueClaim | строка | Утверждение, содержащее коллекцию Restriction. После вызова преобразования утверждений значение этого утверждения будет содержать значение выбранного элемента. |
Пример GetMappedValueFromLocalizedCollection
В следующем примере выполняется поиск описания сообщения об ошибке на основе ключа ошибки. Утверждение ResponseMsg содержит коллекцию сообщений об ошибках для представления пользователю или отправки проверяющей стороне.
<ClaimType Id="responseMsg">
<DisplayName>Error message: </DisplayName>
<DataType>string</DataType>
<UserInputType>Paragraph</UserInputType>
<Restriction>
<Enumeration Text="B2C_V1_90001" Value="You cannot sign in because you are a minor" />
<Enumeration Text="B2C_V1_90002" Value="This action can only be performed by gold members" />
<Enumeration Text="B2C_V1_90003" Value="You have not been enabled for this operation" />
</Restriction>
</ClaimType>
Преобразование утверждений ищет текст элемента и возвращает его значение. Если ограничение локализовано с помощью <LocalizedCollection>
, преобразование утверждений возвращает локализованное значение.
<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
<InputClaims>
<InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- mapFromClaim: B2C_V1_90001.
- Выходные утверждения:
- restrictionValueClaim: "Вы не можете войти, так как являетесь несовершеннолетним".
LookupValue
Ищет значение утверждения в списке значений на основе значения другого утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | inputParameterId | строка | Утверждение, содержащее значение подстановки. |
InputParameter | строка | Коллекция inputParameters. | |
InputParameter | errorOnFailedLookup | boolean | Контролирует, будет ли возвращена ошибка, если значение подстановки не найдено. |
outputClaim | outputClaim | строка | Утверждение, которое будет создано после вызова этого преобразования утверждений. Значение соответствующего Id . |
Пример LookupValue
В следующем примере выполняется поиск доменного имени в одной из коллекций inputParameters. Преобразование утверждений ищет доменное имя в идентификаторе и возвращает его значение (идентификатор приложения).
<ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
</InputClaims>
<InputParameters>
<InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
<InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
<InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
<InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputParameterId: test.com.
- Входные параметры:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1.
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e.
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9.
- errorOnFailedLookup: false.
- Выходные утверждения:
- outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9
Пример LookupValue с ошибкой
Если входной параметр errorOnFailedLookup
имеет значение true
, преобразование утверждений LookupValue всегда выполняется из технического профиля проверки, вызываемого с помощью самоподтвержденного технического профиля или DisplayControl. Метаданные LookupNotFound
самоподтвержденного технического профиля позволяют управлять сообщением об ошибке, представленным пользователю.
В следующем примере выполняется поиск доменного имени в одной из коллекций inputParameters. Преобразование утверждений ищет доменное имя в идентификаторе и возвращает его значение (идентификатор приложения) или выдает сообщение об ошибке.
<ClaimsTransformation Id="DomainToClientId" TransformationMethod="LookupValue">
<InputClaims>
<InputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="inputParameterId" />
</InputClaims>
<InputParameters>
<InputParameter Id="contoso.com" DataType="string" Value="13c15f79-8fb1-4e29-a6c9-be0d36ff19f1" />
<InputParameter Id="microsoft.com" DataType="string" Value="0213308f-17cb-4398-b97e-01da7bd4804e" />
<InputParameter Id="test.com" DataType="string" Value="c7026f88-4299-4cdb-965d-3f166464b8a9" />
<InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainAppId" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputParameterId: live.com
- Входные параметры:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1.
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e.
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9.
- errorOnFailedLookup: true
- Ошибка:
- Не найдено совпадение для входного значения утверждения в списке идентификаторов входных параметров и errorOnFailedLookup имеет значение true.
NullClaim
Удаляет значение указанного утверждения. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
outputClaim | claim_to_null | строка | Для утверждения задано значение NULL. |
Пример NullClaim
Это преобразование утверждений используется для удаления ненужных данных из контейнера свойств утверждения, чтобы сократить размер файла cookie сеанса. В следующем примере удаляется значение типа утверждения TermsOfService
.
<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- outputClaim: "Добро пожаловать в приложение Contoso". Если вы по-прежнему просматриваете и используете этот веб-сайт, вы соглашаетесь соблюдать и выполнять следующие положения и условия...
- Выходные утверждения:
- outputClaim: NULL.
ParseDomain
Получает доменную часть адреса электронной почты. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | emailAddress | строка | Утверждение, которое содержит адрес электронной почты. |
outputClaim | domain | строка | Утверждение, которое создается после вызова этого преобразования утверждений (домен). |
Пример ParseDomain
Это преобразование утверждений используется для анализа доменного имени после символа @ пользователя. В следующих преобразованиях утверждений показано, как проанализировать доменное имя из утверждения email.
<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- EmailAddress: joe@outlook.com.
- Выходные утверждения:
- domain: outlook.com.
SetClaimIfBooleansMatch
Проверяет, имеет ли логическое утверждение значение true
или false
. Если первое, задает выходные утверждения со значением, указанном во входном параметре outputClaimIfMatched
. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | claimToMatch | строка | Тип проверяемого утверждения. При значении NULL возникает исключение. |
InputParameter | matchTo | строка | Значение для сравнения с входным утверждением claimToMatch . Возможные значения: true или false . |
InputParameter | outputClaimIfMatched | строка | Значение, которое будет задано, если входное утверждение равно входном параметру matchTo . |
outputClaim | outputClaim | строка | Если входное утверждение claimToMatch равно входному параметру matchTo , это входное утверждение содержит значение входного параметр outputClaimIfMatched . |
Пример SetClaimIfBooleansMatch
Например, следующее преобразование утверждений проверяет, равно ли значение утверждения hasPromotionCode значению true
. Если да, возвращает значение до Код повышения уровня не найден.
<ClaimsTransformation Id="GeneratePromotionCodeError" TransformationMethod="SetClaimIfBooleansMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="hasPromotionCode" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="true" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="Promotion code not found." />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="promotionCode" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- claimToMatch: true
- Входные параметры:
- matchTo: true
- outputClaimIfMatched: "Код повышения уровня не найден."
- Выходные утверждения:
- outputClaim: "Код повышения уровня не найден."
SetClaimsIfRegexMatch
Проверяет, равны ли строка утверждения claimToMatch
и входной параметр matchTo
, и задает для исходящих утверждений значение, указанное во входном параметре outputClaimIfMatched
, а также задает для исходящего утверждения результата сравнения значение true
или false
в зависимости от результата сравнения.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | claimToMatch | строка | Тип утверждения, которое необходимо сравнить. |
InputParameter | matchTo | строка | Регулярное выражение для сравнения. |
InputParameter | outputClaimIfMatched | строка | Значение, которое необходимо задать, если строки равны. |
InputParameter | extractGroups | boolean | [Необязательно] Указывает, должно ли соответствие регулярного выражения извлекать значения групп. Возможные значения: true или false (по умолчанию). |
outputClaim | outputClaim | строка | Если регулярное выражение совпадает, это исходящее утверждение содержит значение входного параметра outputClaimIfMatched . Или NULL, если совпадений нет. |
outputClaim | regexCompareResultClaim | boolean | Регулярное выражение соответствует типу исходящего утверждения результата, для которого необходимо задать значение true или false на основе результата сравнения. |
outputClaim | Имя утверждения | строка | Если входной параметр extractGroups имеет значение true, список типов утверждений, которые создаются после вызова этого преобразования утверждений. Имя утверждения должно соответствовать имени группы регулярного выражения. |
Пример SetClaimsIfRegexMatch
Проверяет, является ли указанный номер телефона действительным, на основе шаблона регулярного выражения номера телефона.
<ClaimsTransformation Id="SetIsPhoneRegex" TransformationMethod="SetClaimsIfRegexMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phone" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="^[0-9]{4,16}$" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="iPhone" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isPhoneBoolean" TransformationClaimType="regexCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- claimToMatch: "64854114520"
- Входные параметры:
- matchTo: "^[0-9]{4,16}$"
- outputClaimIfMatched: "Phone"
- Выходные утверждения:
- outputClaim: "iPhone"
- regexCompareResultClaim: true
Пример SetClaimsIfRegexMatch с группами извлечения
Проверяет, является ли указанный адрес электронной почты действительным, и возвращает псевдоним электронной почты. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
<ClaimsTransformation Id="GetAliasFromEmail" TransformationMethod="SetClaimsIfRegexMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="(?<mailAlias>.*)@(.*)$" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="isEmail" />
<InputParameter Id="extractGroups" DataType="boolean" Value="true" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="validationResult" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isEmailString" TransformationClaimType="regexCompareResultClaim" />
<OutputClaim ClaimTypeReferenceId="mailAlias" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- claimToMatch: "emily@contoso.com"
- Входные параметры:
- matchTo:
(?<mailAlias>.*)@(.*)$
- outputClaimIfMatched: "isEmail"
- extractGroups: true
- matchTo:
- Выходные утверждения:
- outputClaim: "isEmail"
- regexCompareResultClaim: true
- mailAlias: emily
SetClaimsIfStringsAreEqual
Проверяет, равны ли строка утверждения и входной параметр matchTo
, и задает для исходящих утверждений значение, указанное во входных параметрах stringMatchMsg
и stringMatchMsgCode
, а также задает для исходящего утверждения результата сравнения значение true
или false
в зависимости от результата сравнения.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип утверждения, которое необходимо сравнить. |
InputParameter | matchTo | строка | Строка для сравнения с inputClaim . |
InputParameter | stringComparison | строка | Возможные значения: Ordinal или OrdinalIgnoreCase . |
InputParameter | stringMatchMsg | строка | Первое значение, которое необходимо задать, если строки равны. |
InputParameter | stringMatchMsgCode | строка | Второе значение, которое необходимо задать, если строки равны. |
outputClaim | outputClaim1 | строка | Если строки равны, это исходящее утверждение содержит значение входного параметра stringMatchMsg . |
outputClaim | outputClaim2 | строка | Если строки равны, это исходящее утверждение содержит значение входного параметра stringMatchMsgCode . |
outputClaim | stringCompareResultClaim | boolean | Тип исходящего утверждения результата сравнения, для которого необходимо задать значение true или false на основе результата сравнения. |
Пример SetClaimsIfStringsAreEqual
С помощью этого преобразования можно проверить, равно ли утверждение указанному значению. Например, следующее преобразование утверждений проверяет, равно ли значение утверждения termsOfUseConsentVersion значению v1
. Если да, измените значение на v2
.
<ClaimsTransformation Id="CheckTheTOS" TransformationMethod="SetClaimsIfStringsAreEqual">
<InputClaims>
<InputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="v1" />
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
<InputParameter Id="stringMatchMsgCode" DataType="string" Value="B2C_V1_90005" />
<InputParameter Id="stringMatchMsg" DataType="string" Value="The TOS is upgraded to v2" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersion" TransformationClaimType="outputClaim1" />
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeCode" TransformationClaimType="outputClaim2" />
<OutputClaim ClaimTypeReferenceId="termsOfUseConsentVersionUpgradeResult" TransformationClaimType="stringCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: v1.
- Входные параметры:
- matchTo: V1.
- stringComparison: ordinalIgnoreCase.
- stringMatchMsgCode: B2C_V1_90005.
- stringMatchMsg: обновление TOS до версии 2.
- Выходные утверждения:
- outputClaim1: B2C_V1_90005.
- outputClaim2: "TOS обновлено до версии 2".
- stringCompareResultClaim: true.
SetClaimsIfStringsMatch
Проверяет, равны ли строка утверждения и входной параметр matchTo
, и задает для исходящих утверждений значение, указанное во входном параметре outputClaimIfMatched
, а также задает для исходящего утверждения результата сравнения значение true
или false
в зависимости от результата сравнения.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | claimToMatch | строка | Тип утверждения, которое необходимо сравнить. |
InputParameter | matchTo | строка | Строка для сравнения с inputClaim. |
InputParameter | stringComparison | строка | Возможные значения: Ordinal или OrdinalIgnoreCase . |
InputParameter | outputClaimIfMatched | строка | Значение, которое необходимо задать, если строки равны. |
outputClaim | outputClaim | строка | Если строки равны, это исходящее утверждение содержит значение входного параметра outputClaimIfMatched . Или значение NULL, если строки не совпадают. |
outputClaim | stringCompareResultClaim | boolean | Тип исходящего утверждения результата сравнения, для которого необходимо задать значение true или false на основе результата сравнения. |
Пример SetClaimsIfStringsMatch
Например, следующее преобразование утверждений проверяет, равно ли значение утверждения ageGroup значению Minor
. Если да, возвращает значение для B2C_V1_90001
.
<ClaimsTransformation Id="SetIsMinor" TransformationMethod="SetClaimsIfStringsMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="ageGroup" TransformationClaimType="claimToMatch" />
</InputClaims>
<InputParameters>
<InputParameter Id="matchTo" DataType="string" Value="Minor" />
<InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
<InputParameter Id="outputClaimIfMatched" DataType="string" Value="B2C_V1_90001" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isMinor" TransformationClaimType="outputClaim" />
<OutputClaim ClaimTypeReferenceId="isMinorResponseCode" TransformationClaimType="stringCompareResultClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- claimToMatch: Minor.
- Входные параметры:
- matchTo: Minor.
- stringComparison: ordinalIgnoreCase.
- outputClaimIfMatched: B2C_V1_90001
- Выходные утверждения:
- isMinorResponseCode: true
- isMinor: B2C_V1_90001
StringContains;
Определяет, находится ли указанная подстрока во входном утверждении. Результатом является новое логическое утверждение со значением true
или false
. Значение true
, если параметр значения встречается в этой строке; в противном случае — значение false
.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип утверждения, которое необходимо найти. |
InputParameter | содержит | строка | Значение, которое нужно найти. |
InputParameter | ignoreCase | строка | Указывает, следует ли в этом сравнении игнорировать регистр сравниваемых строк. |
outputClaim | outputClaim | строка | Утверждение, которое создается после вызова этого преобразования утверждений. Логический индикатор, если подстрока встречается во входном утверждении. |
Пример StringContains
Используйте это преобразование, чтобы проверить, содержит ли тип строкового утверждения подстроку. В следующем примере проверяется, содержит ли тип строкового утверждения roles
значение admin.
<ClaimsTransformation Id="CheckIsAdmin" TransformationMethod="StringContains">
<InputClaims>
<InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim"/>
</InputClaims>
<InputParameters>
<InputParameter Id="contains" DataType="string" Value="admin"/>
<InputParameter Id="ignoreCase" DataType="string" Value="true"/>
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="isAdmin" TransformationClaimType="outputClaim"/>
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: "Admin, Утверждающий, Редактор"
- Входные параметры:
- contains: "admin,"
- ignoreCase: true.
- Выходные утверждения:
- outputClaim: true.
StringSubstring
Извлекает части типа строкового утверждения, начиная с символа в указанной позиции, и возвращает указанное число символов. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип утверждения, который содержит строку. |
InputParameter | startIndex | INT | Отсчитываемая от нуля позиция первого знака подстроки в данном экземпляре. |
InputParameter | length | INT | Число символов в подстроке. |
outputClaim | outputClaim | строка | Строка, эквивалентная подстроке с длиной, которая начинается с startIndex в данном экземпляре, или Empty, если значение startIndex равно длине данного экземпляра, а значение длины равно нулю. |
Пример StringSubstring
Например, получите префикс страны/региона для номера телефона.
<ClaimsTransformation Id="GetPhonePrefix" TransformationMethod="StringSubstring">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="startIndex" DataType="int" Value="0" />
<InputParameter Id="length" DataType="int" Value="2" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phonePrefix" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: "+1644114520"
- Входные параметры:
- startIndex: 0
- length: 2
- Выходные утверждения:
- outputClaim: "+1"
StringReplace
Выполняет поиск указанного значения в строке типа утверждения и возвращает новую строку типа утверждения, в которой все вхождения указанной строки в текущей строке заменяются другой заданной строкой.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип утверждения, который содержит строку. |
InputParameter | oldValue | строка | Строка, в которой выполняется поиск. |
InputParameter | newValue | строка | Строка для замены всех вхождений oldValue . |
outputClaim | outputClaim | boolean | Строка, эквивалентная текущей строке, но с тем отличием, что все вхождения oldValue заменены на newValue. Если oldValue не обнаружено в текущем экземпляре, метод возвращает текущий экземпляр без изменений. |
Пример StringReplace
Например, нормализация номера телефона путем удаления символов -
<ClaimsTransformation Id="NormalizePhoneNumber" TransformationMethod="StringReplace">
<InputClaims>
<InputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter Id="oldValue" DataType="string" Value="-" />
<InputParameter Id="newValue" DataType="string" Value="" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim: "+164-411-452-054"
- Входные параметры:
- oldValue: "-"
- newValue: ""
- Выходные утверждения:
- outputClaim: "+164411452054"
StringJoin
Сцепляет элементы указанного типа утверждения коллекции строк, помещая заданный разделитель между каждым элементом или членом.
Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | stringCollection | Коллекция, содержащая строки для сцепления. |
InputParameter | разделитель | строка | Строка, используемая в качестве разделителя, например запятая , . |
outputClaim | outputClaim | строка | Строка, состоящая из элементов коллекции строк inputClaim , разделяемых входным параметром delimiter . |
Пример StringJoin
В следующем примере коллекция строк для ролей пользователей преобразуется в строку с разделителем запятой. Этот метод можно использовать для хранения коллекции строк в учетной записи пользователя Azure AD B2C. Позже, при чтении учетной записи из каталога, используйте StringSplit
для преобразования строки с разделителем запятой обратно в коллекцию строк.
<ClaimsTransformation Id="ConvertRolesStringCollectionToCommaDelimiterString" TransformationMethod="StringJoin">
<InputClaims>
<InputClaim ClaimTypeReferenceId="roles" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter DataType="string" Id="delimiter" Value="," />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="rolesCommaDelimiterConverted" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim:
[ "Admin", "Author", "Reader" ]
.
- inputClaim:
- Входные параметры:
- delimiter: ","
- Выходные утверждения:
- outputClaim:
"Admin,Author,Reader"
.
- outputClaim:
StringSplit
Возвращает строковый массив, содержащий подстроки в этом экземпляре, разделенные элементами заданной строки. Ознакомьтесь с преобразованием этих утверждений в демонстрации в реальном времени.
Элемент | TransformationClaimType | Тип данных | Примечания. |
---|---|---|---|
InputClaim | InputClaim | строка | Тип строкового утверждения, который содержит подстроки для разбиения. |
InputParameter | разделитель | строка | Строка, используемая в качестве разделителя, например запятая , . |
outputClaim | outputClaim | stringCollection | Коллекция строк, элементы которой содержат подстроки данной строки, разделенные входным параметром delimiter . |
Примечание.
Все существующие элементы в stringCollection OutputClaim
будут удалены.
Пример StringSplit
В следующем примере строка ролей пользователей с разделителями запятыми преобразуется в коллекцию строк.
<ClaimsTransformation Id="ConvertRolesToStringCollection" TransformationMethod="StringSplit">
<InputClaims>
<InputClaim ClaimTypeReferenceId="rolesCommaDelimiter" TransformationClaimType="inputClaim" />
</InputClaims>
<InputParameters>
<InputParameter DataType="string" Id="delimiter" Value="," />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="roles" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Входные утверждения:
- inputClaim:
Admin,Author,Reader
.
- inputClaim:
- Входные параметры:
- delimiter: ","
- Выходные утверждения:
- outputClaim:
[ "Admin", "Author", "Reader" ]
.
- outputClaim:
Выражения преобразований строкового утверждения
Выражения преобразования утверждений в пользовательских политиках Azure AD B2C предоставляют контекстные сведения об идентификаторе клиента и технического профиля.
Expression | Описание: | Пример |
---|---|---|
{TechnicalProfileId} |
Имя идентификатора технического профиля. | Facebook-OAUTH |
{RelyingPartyTenantId} |
Идентификатор клиента для политики проверяющей стороны. | your-tenant.onmicrosoft.com |
{TrustFrameworkTenantId} |
Идентификатор клиента инфраструктуры доверия. | your-tenant.onmicrosoft.com |
Следующие шаги
- Дополнительные примеры преобразования утверждений можно найти в репозитории сообщества Azure AD B2C в GitHub.