Transformationen von Zeichenfolgen-Ansprüchen
Dieser Artikel enthält Beispiele für die Verwendung von Transformationen von Zeichenfolgenansprüchen des Identity Experience Framework-Schemas in Azure Active Directory B2C (Azure AD B2C). Weitere Informationen finden Sie unter Transformationen von Ansprüchen.
AssertStringClaimsAreEqual
Vergleicht zwei Ansprüche und löst eine Ausnahme aus, wenn sie gemäß dem angegebenen Vergleich inputClaim1, inputClaim2 und stringComparison nicht gleich sind.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim1 | Zeichenfolge | Der Typ des ersten Anspruchs, der verglichen werden soll. |
InputClaim | inputClaim2 | Zeichenfolge | Der Typ des zweiten Anspruchs, der verglichen werden soll. |
InputParameter | stringComparison | Zeichenfolge | Zeichenfolgenvergleich, einer der Werte: Ordinal, OrdinalIgnoreCase. |
Die Anspruchstransformation AssertStringClaimsAreEqual wird immer über ein technisches Validierungsprofil ausgeführt, das von einem selbstbestätigten technischen Profil aufgerufen wird (oder von einem Element vom Typ DisplayControl). Die UserMessageIfClaimsTransformationStringsAreNotEqual
-Metadaten eines selbstbestätigten technischen Profils steuern die Fehlermeldung, die dem Benutzer angezeigt wird. Die Fehlermeldungen können lokalisiert werden.
Beispiel für AssertStringClaimsAreEqual
Mithilfe dieser Anspruchstransformation können Sie sicherstellen, dass zwei Ansprüche den gleichen Wert aufweisen. Ist dies nicht der Fall, wird eine Fehlermeldung ausgelöst. Im folgenden Beispiel wird überprüft, ob der Anspruch StrongAuthenticationEmailAddress gleich dem Anspruch email ist. Andernfalls wird eine Fehlermeldung ausgelöst.
<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>
- Eingabeansprüche:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- Eingabeparameter:
- stringComparison: ordinalIgnoreCase
- Ergebnis: Fehler wird ausgelöst.
Aufrufen der Anspruchstransformation AssertStringClaimsAreEqual
Das technische Validierungsprofil login-NonInteractive ruft die Anspruchstransformation AssertEmailAndStrongAuthenticationEmailAddressAreEqual auf.
<TechnicalProfile Id="login-NonInteractive">
...
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
</OutputClaimsTransformations>
</TechnicalProfile>
Das selbstbestätigte technische Profil ruft das technische Validierungsprofil login-NonInteractive auf.
<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
Erstellt einen URI auf Grundlage des zeitbasierten Einmalkennworts (TOTP). Der URI ist eine Kombination aus dem eindeutigen Bezeichner des Benutzers (z. B. der E-Mail-Adresse) und einem geheimen Schlüssel. Der URI wird später in einen QR-Code konvertiert, der dem Benutzer angezeigt wird. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | path | Zeichenfolge | Der eindeutige Bezeichner des Benutzers, z. B. die E-Mail-Adresse, der Benutzername oder die Telefonnummer. |
InputClaim | query.secret | Zeichenfolge | Der geheime TOTP-Schlüssel. |
InputParameter | scheme | Zeichenfolge | Der Schemateil des URIs. Beispiel: otpauth . |
InputParameter | host | Zeichenfolge | Der Schemateil des URIs. Beispiel: totp . |
InputParameter | query.issuer | Zeichenfolge | Der Ausstellerteil des URIs. Beispiel: {AuthenticatorIssuer} . |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Beispiel für BuildUri
Die folgende Anspruchstransformation generiert einen TOTP-URI, der im QR-Code oder Deep Link angezeigt wird.
<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>
- Eingabeansprüche:
- path: emily@fabrikam.com
- query.secret:
fay2lj7ynpntjgqa
- Eingabeparameter:
- scheme:
otpauth
- host:
totp
- query.issuer:
{AuthenticatorIssuer}
- scheme:
- Ausgabeansprüche:
- outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
- outputClaim:
ChangeCase
Ändert die Groß-/Kleinschreibung des bereitgestellten Anspruchs je nach Operator in Groß- oder Kleinbuchstaben. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim1 | Zeichenfolge | Der zu ändernde Anspruch. |
InputParameter | toCase | Zeichenfolge | Einer der folgenden Werte: LOWER oder UPPER . |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Beispiel für ChangeCase
Mit der folgenden Anspruchstransformation wird der E-Mail-Anspruch in Kleinbuchstaben geändert.
<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>
- Eingabeansprüche:
- email: SomeOne@contoso.com
- Eingabeparameter:
- toCase: LOWER
- Ausgabeansprüche:
- email: someone@contoso.com
CompareClaims
Bestimmt, ob ein Zeichenfolgen-Anspruch einem anderen entspricht. Das Ergebnis ist ein neuer boolescher Anspruchs mit dem Wert true
oder false
. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim1 | Zeichenfolge | Der erste Anspruchstyp, der verglichen werden soll. |
InputClaim | inputClaim2 | Zeichenfolge | Der zweite Anspruchstyp, der verglichen werden soll. |
InputParameter | Operator | Zeichenfolge | Mögliche Werte: EQUAL oder NOT EQUAL . |
InputParameter | ignoreCase | Zeichenfolge | Gibt an, ob bei diesem Vergleich die Groß-/Kleinschreibung in den Zeichenfolgen, die miteinander verglichen werden, ignoriert werden soll. |
OutputClaim | outputClaim | boolean | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Beispiel für CompareClaims
Mithilfe dieser Anspruchstransformation können Sie überprüfen, ob ein Anspruch gleich einem anderen Anspruch ist. Die folgende Anspruchstransformation überprüft, ob der Wert des Anspruchs email mit dem Wert des Anspruch Verified.Email identisch ist.
<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>
- Eingabeansprüche:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- Eingabeparameter:
- operator: NOT EQUAL
- ignoreCase: true
- Ausgabeansprüche:
- outputClaim: true
CompareClaimToValue
Bestimmt, ob der Wert eines Anspruchs gleich dem Wert des Eingabeparameters ist. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim1 | Zeichenfolge | Der Anspruchstyp, der verglichen werden soll. |
InputParameter | Operator | Zeichenfolge | Mögliche Werte: EQUAL oder NOT EQUAL . |
InputParameter | compareTo | Zeichenfolge | Zeichenfolgenvergleich, einer der Werte, d. h. die Zeichenfolge, mit der die Eingabeanspruchswerte verglichen werden müssen: Ordinal, OrdinalIgnoreCase. |
InputParameter | ignoreCase | Zeichenfolge | Gibt an, ob bei diesem Vergleich die Groß-/Kleinschreibung in den Zeichenfolgen, die miteinander verglichen werden, ignoriert werden soll. |
OutputClaim | outputClaim | boolean | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Beispiel für CompareClaimToValue
Mithilfe dieser Anspruchstransformation können Sie überprüfen, ob ein Anspruch gleich einem von Ihnen angegebenen Wert ist. Bei der folgenden Anspruchstransformation wird beispielsweise überprüft, ob der Wert des Anspruchs termsOfUseConsentVersion gleich V2
ist.
<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>
- Eingabeansprüche:
- inputClaim1: v1
- Eingabeparameter:
- compareTo: V2
- operator: NOT EQUAL
- ignoreCase: true
- Ausgabeansprüche:
- outputClaim: true
CopyClaimIfPredicateMatch
Kopiert den Wert eines Anspruchs in einen anderen, wenn der Wert des Eingabeanspruchs mit dem Prädikat des Ausgabeanspruchs übereinstimmt. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Dies ist der Anspruchstyp, der kopiert werden soll |
OutputClaim | outputClaim | Zeichenfolge | Dies ist der Anspruchstyp, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. Der Wert des Eingabeanspruchs wird anhand dieses Anspruchsprädikats überprüft. |
Beispiel für CopyClaimIfPredicateMatch
Im folgenden Beispiel wird versucht, den Anspruchswert signInName in den Anspruch phoneNumber zu kopieren. In diesem Beispiel wird der Wert nicht kopiert. Der Anspruch signInName hat nicht das erwartete Format (Telefonnummer). Das komplette Beispiel finden Sie in der Starter Pack-Richtlinie zur Anmeldung mit Telefonnummer oder E-Mail-Adresse.
<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- inputClaim: bob@contoso.com
- Ausgabeansprüche:
- outputClaim: Der ursprüngliche Wert des Ausgabeanspruchs wird nicht geändert.
Beispiel für CopyClaimIfPredicateMatch, das mit dem Prädikat übereinstimmt
In diesem Beispiel kopiert die Anspruchstransformation den Wert. Der Anspruch signInName hat das richtige Format (Telefonnummer).
- Eingabeansprüche:
- inputClaim: +11234567890
- Ausgabeansprüche:
- outputClaim: +11234567890
CreateOtpSecret
Erstellt einen TOTP-Zeichenfolgenanspruch. Die Ausgabe dieser Anspruchstransformation ist ein geheimer TOTP-Schlüssel, der später im Konto des Azure AD B2C-Benutzers gespeichert und für die Microsoft Authenticator-App freigegeben wird. Die Authenticator-App verwendet den Schlüssel, um TOTP-Codes zu generieren, wenn der Benutzer die mehrstufige Authentifizierung (Multi-Factor Authentication, MFA) durchlaufen muss. Ihre Richtlinie verwendet den Schlüssel, um den vom Benutzer bereitgestellten TOTP-Code zu überprüfen.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation mit dem generierten TOTP-Code aufgerufen wurde. |
Beispiel für CreateOtpSecret
Die folgende Anspruchstransformation erstellt ein Geheimnis für den TOTP-Multi-Factor-Authenticator.
<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Ausgabeansprüche:
- outputClaim:
hmlcmd4ph6fph64c
- outputClaim:
CreateRandomString
Erstellt mithilfe des Zufallszahlengenerators eine zufällige Zeichenfolge. Wenn der Zufallszahlengenerator vom Typ integer
ist, können optional ein Seedparameter und die maximale Anzahl angegeben werden. Mit einem optionalen Parameter im Zeichenfolgenformat kann die Ausgabe formatiert werden, und ein optionaler Parameter mit base64-Codierung gibt an, ob die Ausgabe base64-codiert ist und wie folgt lautet: randomGeneratorType [guid, integer] outputClaim (String).
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputParameter | randomGeneratorType | Zeichenfolge | Gibt den zufälligen Wert an, der generiert werden soll: GUID (globale eindeutige ID) oder INTEGER (eine Ziffer). |
InputParameter | stringFormat | Zeichenfolge | [Optional] Formatiert den Zufallswert. |
InputParameter | base64 | boolean | [Optional] Konvertiert den Zufallswert in base64. Wenn das Zeichenfolgenformat angewendet wird, wird der Wert nach dem Zeichenfolgenformat mit base64 codiert. |
InputParameter | maximumNumber | INT | [Optional] Nur für INTEGER randomGeneratorType. Gibt die maximale Anzahl an. |
InputParameter | seed | INT | [Optional] Nur für INTEGER randomGeneratorType. Gibt den Seed für den Zufallswert an. Hinweis: Der gleiche Seed ergibt die gleiche Sequenz von Zufallszahlen. |
OutputClaim | outputClaim | Zeichenfolge | Die Ansprüche, die erstellt werden, nachdem diese Anspruchstransformation aufgerufen wurde. Der Zufallswert. |
Beispiel für CreateRandomString
Im folgenden Beispiel wird eine globale eindeutige ID generiert. Mithilfe dieser Anspruchstransformation wird der zufällige UPN (User Principal Name, Benutzerprinzipalname) erstellt.
<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeparameter:
- randomGeneratorType: GUID
- Ausgabeansprüche:
- outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc
Beispiel für CreateRandomString zum Erstellen eines numerischen Werts
Im folgenden Beispiel wird ein ganzzahliger Zufallswert zwischen 0 und 1.000 generiert. Der Wert ist wie folgt formatiert: OTP_{random value}.
<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>
- Eingabeparameter:
- randomGeneratorType: INTEGER
- maximumNumber: 1000
- stringFormat: OTP_{0}
- base64: false
- Ausgabeansprüche:
- outputClaim: OTP_853
CreateStringClaim
Erstellt einen Zeichenfolgenanspruch aus dem angegebenen Eingabeparameter in der Transformation. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputParameter | value | Zeichenfolge | Die festzulegende Zeichenfolge. Dieser Eingabeparameter unterstützt Transformationsausdrücke für Zeichenfolgenansprüche. |
OutputClaim | createdClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation mit dem im Eingabeparameter angegebenen Wert aufgerufen wurde. |
Beispiel für CreateStringClaim
Die folgende Anspruchstransformation erstellt einen Zeichenfolgenwert mit Vertragsbedingungen.
<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>
- Eingabeparameter:
- value: Contoso-AGB ...
- Ausgabeansprüche:
- createdClaim: Der Anspruch für Vertragsbedingungen enthält den Wert „Contoso terms of service...“.
FormatLocalizedString
Formatiert mehrere Ansprüche gemäß einer angegebenen lokalisierten Formatzeichenfolge. Bei dieser Transformation wird die C#-Methode String.Format
verwendet. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaims | Zeichenfolge | Dies ist die Sammlung von Eingabeansprüchen, die als Parameter {0}, {1}, {2} im Zeichenfolgenformat fungiert. | |
InputParameter | stringFormatId | Zeichenfolge | Dies ist der StringId -Wert einer lokalisierten Zeichenfolge. |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Hinweis
Es gibt keine Beschränkung für die Anzahl der Eingabeansprüche, die Sie angeben können, aber die maximale Länge der formatierten Zeichenfolge beträgt 4000.
So verwenden Sie die FormatLocalizedString-Anspruchstransformation:
- Definieren Sie eine Lokalisierungszeichenfolge, und ordnen Sie diese einem selbstbestätigten technischen Profil zu.
- Der
ElementType
desLocalizedString
-Elements muss aufFormatLocalizedStringTransformationClaimType
festgelegt sein. StringId
ist ein eindeutiger Bezeichner, den Sie definieren und später in Ihrer AnspruchstransformationstringFormatId
nutzen.- Geben Sie in der Anspruchstransformation die Liste mit den Ansprüchen an, die für die lokalisierte Zeichenfolge festgelegt werden sollen. Legen Sie dann
stringFormatId
auf denStringId
-Wert der lokalisierten Zeichenfolge fest. - Verweisen Sie in einem selbstbestätigten technischen Profil oder einer Eingabe- oder Ausgabeanspruchstransformation des Anzeigesteuerelements auf Ihre Anspruchstransformation.
Beispiel für FormatLocalizedString
Im folgenden Beispiel wird eine Fehlermeldung generiert, wenn ein Konto bereits im Verzeichnis vorhanden ist. Das Beispiel definiert lokalisierte Zeichenfolgen für Englisch (Standard) und Spanisch.
<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>
Die Anspruchstransformation erstellt eine Antwortnachricht auf Grundlage der lokalisierten Zeichenfolge. Die Nachricht enthält die in die lokalisierte Zeichenfolge ResponseMessge_EmailExists eingebettete E-Mail-Adresse des Benutzers.
<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>
- Eingabeansprüche:
- inputClaim: sarah@contoso.com
- Eingabeparameter:
- stringFormat: ResponseMessge_EmailExists
- Ausgabeansprüche:
- outputClaim: Mit der E-Mail-Adresse „sarah@contoso.com“ ist bereits ein Konto in dieser Organisation vorhanden. Wählen Sie „Weiter“ aus, um sich mit diesem Konto anzumelden.
FormatStringClaim
Formatiert einen Anspruch gemäß der angegebenen Formatzeichenfolge. Bei dieser Transformation wird die C#-Methode String.Format
verwendet. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Der Anspruch, der als Parameter {0} im Zeichenfolgenformat fungiert. |
InputParameter | stringFormat | Zeichenfolge | Das Zeichenfolgenformat, einschließlich des Parameters {0}. Dieser Eingabeparameter unterstützt Transformationsausdrücke für Zeichenfolgenansprüche. |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Hinweis
Die maximal zulässige Größe für das Zeichenfolgenformat ist 4000.
Beispiel für FormatStringClaim
Mithilfe dieser Anspruchstransformation können Sie eine beliebige Zeichenfolge mit dem Parameter {0} formatieren. Im folgenden Beispiel wird ein userPrincipalName erstellt. Sämtliche technische Profile sozialer Identitätsanbieter, wie z.B. Facebook-OAUTH
, rufen den CreateUserPrincipalName zum Generieren eines userPrincipalName auf.
<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>
- Eingabeansprüche:
- inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9
- Eingabeparameter:
- stringFormat: cpim_{0}@{RelyingPartyTenantId}
- Ausgabeansprüche:
- outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com
FormatStringMultipleClaims
Formatiert zwei Ansprüche gemäß der angegebenen Formatzeichenfolge. Bei dieser Transformation wird die C#-Methode String.Format
verwendet. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim1 | Zeichenfolge | Der Anspruch, der als Parameter {0} im Zeichenfolgenformat fungiert. |
InputClaim | inputClaim2 | Zeichenfolge | Der Anspruch, der als Parameter {1} im Zeichenfolgenformat fungiert. |
InputParameter | stringFormat | Zeichenfolge | Das Zeichenfolgenformat, einschließlich der Parameter {0} und {1}. Dieser Eingabeparameter unterstützt Transformationsausdrücke für Zeichenfolgenansprüche. |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. |
Hinweis
Die maximal zulässige Größe für das Zeichenfolgenformat ist 4000.
Beispiel für FormatStringMultipleClaims
Mithilfe dieser Anspruchstransformation können Sie eine beliebige Zeichenfolge mit zwei Parametern, {0} und {1}, formatieren. Im folgenden Beispiel wird ein displayName mit dem angegebenen Format erstellt:
<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>
- Eingabeansprüche:
- inputClaim1: Joe
- inputClaim2: Fernando
- Eingabeparameter:
- stringFormat: {0}{1}
- Ausgabeansprüche:
- outputClaim: Joe Fernando
GetLocalizedStringsTransformation
Kopiert lokalisierte Zeichenfolgen in Ansprüche. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
OutputClaim | Der Name der lokalisierten Zeichenfolge. | Zeichenfolge | Die Liste der Anspruchstypen, die nach dem Aufrufen dieser Anspruchstransformation erstellt werden. |
Verwenden Sie die Anspruchstransformation „GetLocalizedStringsTransformation“ wie folgt:
Definieren Sie eine Lokalisierungszeichenfolge für Ihre Inhaltsdefinition, etwa
api.selfasserted
.Der
ElementType
desLocalizedString
-Elements muss aufGetLocalizedStringsTransformationClaimType
festgelegt sein.StringId
ist ein eindeutiger Bezeichner, den Sie definieren und später in Ihrer Anspruchstransformation nutzen.Geben Sie in der Anspruchstransformation die Liste mit den Ansprüchen an, die für die lokalisierte Zeichenfolge festgelegt werden sollen.
ClaimTypeReferenceId
ist ein Verweis auf einen Anspruch, der bereits im Abschnitt „ClaimsSchema“ der Richtlinie definiert wurde.TransformationClaimType
ist der Name der lokalisierten Zeichenfolge gemäß der Definition in derStringId
desLocalizedString
-Elements.Verweisen Sie in einem selbstbestätigten technischen Profil oder in einem technischen Profil zur Anspruchstransformation auf Ihre Anspruchstransformation.
Ordnen Sie das technische Profil der Inhaltsdefinition zu, z. B.
api.selfasserted
. Das folgende Beispiel zeigt, wie der Inhaltsdefinitionapi.selfasserted
ein technisches Profil zugeordnet wird:<Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> </Metadata>
Das folgende Diagramm zeigt, wie die Anspruchstransformation mit den Lokalisierungselementen konfiguriert wird:
Beispiel für GetLocalizedStringsTransformation
Im folgenden Beispiel werden der E-Mail-Betreff, der Text, Ihre Codemeldung und die Signatur der E-Mail für lokalisierte Zeichenfolgen nachgeschlagen. Die Ansprüche werden später von der benutzerdefinierten Vorlage für die E-Mail-Überprüfung verwendet.
Definieren Sie lokalisierte Zeichenfolgen für Englisch (Standardeinstellung) und Spanisch.
<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>
Die Anspruchstransformation legt den Wert des Anspruchstyps subject mit dem Wert von StringId
email_subject fest.
<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>
- Ausgabeansprüche:
- subject: E-Mail-Prüfcode für Contoso-Konto
- message: Vielen Dank für die Bestätigung Ihres Kontos!
- codeIntro: Ihr Code lautet:
- signature: Mit freundlichen Grüßen
GetMappedValueFromLocalizedCollection
Ordnet ein Element aus der Sammlung Restriction des Eingabeanspruchs zu. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | mapFromClaim | Zeichenfolge | Der Anspruch mit dem Text, nach dem in den restrictionValueClaim-Ansprüchen über die Sammlung Restriction gesucht werden soll. |
OutputClaim | restrictionValueClaim | Zeichenfolge | Der Anspruch mit der Sammlung Restriction. Nach dem Aufrufen der Anspruchstransformation enthält der Wert dieses Anspruchs den Wert des ausgewählten Elements. |
Beispiel für GetMappedValueFromLocalizedCollection
Im folgenden Beispiel wird anhand des Schlüssels des Fehlers nach der Beschreibung der Fehlermeldung gesucht. Der Anspruch responseMsg enthält eine Sammlung von Fehlermeldungen, die dem Benutzer angezeigt oder der vertrauenden Seite gesendet werden sollen.
<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>
Bei der Anspruchstransformation wird nach dem Text des Elements gesucht und der zugehörige Wert zurückgegeben. Wenn die Einschränkung mithilfe von <LocalizedCollection>
lokalisiert wird, wird der lokalisierte Wert von der Anspruchstransformation zurückgegeben.
<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
<InputClaims>
<InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- mapFromClaim: B2C_V1_90001
- Ausgabeansprüche:
- restrictionValueClaim: Sie können sich nicht anmelden, weil Sie nicht volljährig sind.
LookupValue
Sucht einen Anspruchswert aus einer Liste von Werten, basierend auf dem Wert eines anderen Anspruchs. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputParameterId | Zeichenfolge | Der Anspruch, der den Suchwert enthält |
InputParameter | Zeichenfolge | Die Sammlung von inputParameters. | |
InputParameter | errorOnFailedLookup | boolean | Steuert, ob bei keinem übereinstimmenden Suchergebnis ein Fehler zurückgegeben wird. |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. Der Wert der übereinstimmenden Id . |
Beispiel für LookupValue
Im folgenden Beispiel wird in einer der Sammlungen von inputParameter nach dem Domänennamen gesucht. Bei der Anspruchstransformation wird in dem Bezeichner nach dem Domänennamen gesucht und der zugehörige Wert (eine Anwendungs-ID) zurückgegeben.
<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>
- Eingabeansprüche:
- inputParameterId: test.com
- Eingabeparameter:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: false
- Ausgabeansprüche:
- outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9
Beispiel für LookupValue mit Fehler
Wenn der Eingabeparameter errorOnFailedLookup
auf true
festgelegt ist, wird die Anspruchstransformation LookupValue immer über ein technisches Validierungsprofil ausgeführt, das von einem selbstbestätigten technischen Profil aufgerufen wird (oder von einem Element vom Typ DisplayControl). Die LookupNotFound
-Metadaten eines selbstbestätigten technischen Profils steuern die Fehlermeldung, die dem Benutzer angezeigt wird.
Im folgenden Beispiel wird in einer der Sammlungen von inputParameter nach dem Domänennamen gesucht. Bei der Anspruchstransformation wird in dem Bezeichner nach dem Domänennamen gesucht und der zugehörige Wert (eine Anwendungs-ID) oder eine Fehlermeldung zurückgegeben.
<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>
- Eingabeansprüche:
- inputParameterId: live.com
- Eingabeparameter:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: true
- Fehler:
- In der Liste der Eingabeparameter-IDs wurde keine Entsprechung für den Eingabeanspruchswert gefunden, und „errorOnFailedLookup“ ist „true“.
NullClaim
Bereinigt den Wert eines angegebenen Anspruchs. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
OutputClaim | claim_to_null | Zeichenfolge | Der Wert des Anspruchs ist auf NULL festgelegt. |
Beispiel für NullClaim
Mithilfe dieser Anspruchstransformation können Sie unnötige Daten aus der Eigenschaftensammlung eines Anspruchs entfernen, sodass das Sitzungscookie kleiner wird. Im folgenden Beispiel wird der Wert des Anspruchstyps TermsOfService
entfernt.
<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- outputClaim: Willkommen bei der Contoso-App. Wenn Sie diese Website weiterhin aufrufen und nutzen, erklären Sie sich mit den folgenden Bestimmungen einverstanden...
- Ausgabeansprüche:
- outputClaim: NULL
ParseDomain
Ruft den Domänenteil einer E-Mail-Adresse ab. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | emailAddress | Zeichenfolge | Der Anspruch, der die E-Mail-Adresse enthält. |
OutputClaim | Domäne | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde (die Domäne). |
Beispiel für ParseDomain
Mithilfe dieser Anspruchstransformation können Sie den Domänennamen hinter dem Symbol @ des Benutzers analysieren. Die folgende Anspruchstransformation veranschaulicht, wie der Domänenname aus einem Anspruch vom Typ email analysiert wird.
<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
- Eingabeansprüche:
- emailAddress: joe@outlook.com
- Ausgabeansprüche:
- domain: outlook.com
SetClaimIfBooleansMatch
Überprüft, ob ein boolescher Anspruch true
oder false
ist. Falls ja, werden die Ausgabeansprüche mit dem Wert festgelegt, der im Eingabeparameter outputClaimIfMatched
enthalten ist. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | claimToMatch | Zeichenfolge | Dies ist der Anspruchstyp, der überprüft werden soll. Ein Null-Wert löst eine Ausnahme aus. |
InputParameter | matchTo | Zeichenfolge | Der Wert, der mit dem Eingabeanspruch claimToMatch verglichen werden soll. Mögliche Werte sind true oder false . |
InputParameter | outputClaimIfMatched | Zeichenfolge | Der Wert, der festgelegt werden soll, wenn der Eingabeanspruch dem Wert im Eingabeparameter matchTo entspricht. |
OutputClaim | outputClaim | Zeichenfolge | Wenn der Eingabeanspruch claimToMatch dem Eingabeparameter matchTo entspricht, enthält dieser Ausgabeanspruch den Wert des Eingabeparameters outputClaimIfMatched . |
Beispiel für SetClaimIfBooleansMatch
Bei der folgenden Anspruchstransformation wird beispielsweise überprüft, ob der Wert des hasPromotionCode-Anspruchs true
lautet. Falls ja, wird der Wert als Promotioncode nicht gefunden zurückgegeben.
<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>
- Eingabeansprüche:
- claimToMatch: true
- Eingabeparameter:
- matchTo: true
- outputClaimIfMatched: „Promotioncode nicht gefunden“.
- Ausgabeansprüche:
- outputClaim: „Promotioncode nicht gefunden“.
SetClaimsIfRegexMatch
Überprüft, ob ein Zeichenfolgenanspruch claimToMatch
und der Eingabeparameter matchTo
gleich sind, und legt die Ausgabeansprüche mit dem Wert im Eingabeparameter outputClaimIfMatched
fest, zusammen mit dem Ausgabeanspruch des Vergleichsergebnisses, der anhand des Vergleichsergebnisses auf true
oder false
festgelegt werden muss.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
inputClaim | claimToMatch | Zeichenfolge | Der Anspruchstyp, der verglichen werden soll. |
InputParameter | matchTo | Zeichenfolge | Der reguläre Ausdruck, mit dem eine Übereinstimmung bestehen soll. |
InputParameter | outputClaimIfMatched | Zeichenfolge | Der Wert, der festgelegt werden soll, wenn Zeichenfolgen gleich sind. |
InputParameter | extractGroups | boolean | [Optional] Gibt an, ob die Regex-Übereinstimmung Gruppenwerte extrahieren soll. Mögliche Werte sind true oder false (Standardwert). |
OutputClaim | outputClaim | Zeichenfolge | Wenn es eine Übereinstimmung mit dem regulären Ausdruck gibt, enthält dieser Ausgabeanspruch den Wert des Eingabeparameters outputClaimIfMatched . Oder Null, wenn keine Übereinstimmung vorliegt. |
OutputClaim | regexCompareResultClaim | boolean | Der Ausgabeanspruchstyp des Übereinstimmungsergebnisses mit dem regulären Ausdruck, der anhand des Übereinstimmungsergebnisses auf true oder false festgelegt werden muss. |
OutputClaim | Der Name des Anspruchs | Zeichenfolge | Die Liste der Anspruchstypen, die nach dem Aufrufen dieser Anspruchstransformation erstellt werden, wenn der Eingabeparameter „extractGroups“ auf „true“ festgelegt ist. Der Name des Anspruchs muss mit dem RegEx-Gruppennamen übereinstimmen. |
Beispiel für SetClaimsIfRegexMatch
Anhand des Musters des regulären Ausdrucks für Telefonnummern wird überprüft, ob die angegebene Telefonnummer gültig ist.
<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>
- Eingabeansprüche:
- claimToMatch: "64854114520"
- Eingabeparameter:
- matchTo: "^[0-9]{4,16}$"
- outputClaimIfMatched: "Phone"
- Ausgabeansprüche:
- outputClaim: "iPhone"
- regexCompareResultClaim: true
Beispiel für SetClaimsIfRegexMatch mit Extraktionsgruppen
Überprüft, ob die angegebene E-Mail-Adresse gültig ist, und gibt den E-Mail-Alias zurück. Sehen Sie sich die Livedemo dieser Anspruchstransformation mit extrahierten Gruppen an.
<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>
- Eingabeansprüche:
- claimToMatch: „emily@contoso.com“
- Eingabeparameter:
- matchTo:
(?<mailAlias>.*)@(.*)$
- outputClaimIfMatched: "isEmail"
- extractGroups: true
- matchTo:
- Ausgabeansprüche:
- outputClaim: „isEmail“
- regexCompareResultClaim: true
- mailAlias: emily
SetClaimsIfStringsAreEqual
Überprüft, ob ein Zeichenfolgenanspruch und der Eingabeparameter matchTo
gleich sind, und legt die Ausgabeansprüche mit dem Wert in den Eingabeparametern stringMatchMsg
und stringMatchMsgCode
fest, zusammen mit dem Ausgabeanspruch „CompareResult“, der basierend auf dem Ergebnis des Vergleichs auf true
oder false
festgelegt werden muss.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Der Anspruchstyp, der verglichen werden soll. |
InputParameter | matchTo | Zeichenfolge | Die Zeichenfolge, die mit inputClaim verglichen werden soll. |
InputParameter | stringComparison | Zeichenfolge | Mögliche Werte: Ordinal oder OrdinalIgnoreCase . |
InputParameter | stringMatchMsg | Zeichenfolge | Der erste Wert, der festgelegt werden soll, wenn Zeichenfolgen gleich sind. |
InputParameter | stringMatchMsgCode | Zeichenfolge | Der zweite Wert, der festgelegt werden soll, wenn Zeichenfolgen gleich sind. |
OutputClaim | outputClaim1 | Zeichenfolge | Wenn Zeichenfolgen gleich sind, enthält dieser Ausgabeanspruch den Wert des Eingabeparameters stringMatchMsg . |
OutputClaim | outputClaim2 | Zeichenfolge | Wenn Zeichenfolgen gleich sind, enthält dieser Ausgabeanspruch den Wert des Eingabeparameters stringMatchMsgCode . |
OutputClaim | stringCompareResultClaim | boolean | Der Ausgabeanspruchstyp „CompareResult“, der basierend auf dem Ergebnis des Vergleichs auf true oder false festgelegt werden muss. |
Beispiel für SetClaimsIfStringsAreEqual
Mithilfe dieser Anspruchstransformation können Sie überprüfen, ob ein Anspruch gleich einem von Ihnen angegebenen Wert ist. Bei der folgenden Anspruchstransformation wird beispielsweise überprüft, ob der Wert des Anspruchs termsOfUseConsentVersion gleich v1
ist. Ist dies der Fall, ändern Sie den Wert in 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>
- Eingabeansprüche:
- inputClaim: v1
- Eingabeparameter:
- matchTo: V1
- stringComparison: ordinalIgnoreCase
- stringMatchMsgCode: B2C_V1_90005
- stringMatchMsg: TOS wird auf v2 aktualisiert
- Ausgabeansprüche:
- outputClaim1: B2C_V1_90005
- outputClaim2: Die TOS wurden auf v2 aktualisiert.
- stringCompareResultClaim: true
SetClaimsIfStringsMatch
Überprüft, ob ein Zeichenfolgenanspruch und der Eingabeparameter matchTo
gleich sind, und legt die Ausgabeansprüche mit dem Wert im Eingabeparameter outputClaimIfMatched
fest, zusammen mit dem Ausgabeanspruch des Vergleichsergebnisses, der anhand des Vergleichsergebnisses auf true
oder false
festgelegt werden muss.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | claimToMatch | Zeichenfolge | Der Anspruchstyp, der verglichen werden soll. |
InputParameter | matchTo | Zeichenfolge | Die Zeichenfolge, die mit „inputClaim“ verglichen werden soll. |
InputParameter | stringComparison | Zeichenfolge | Mögliche Werte: Ordinal oder OrdinalIgnoreCase . |
InputParameter | outputClaimIfMatched | Zeichenfolge | Der Wert, der festgelegt werden soll, wenn Zeichenfolgen gleich sind. |
OutputClaim | outputClaim | Zeichenfolge | Wenn Zeichenfolgen gleich sind, enthält dieser Ausgabeanspruch den Wert des Eingabeparameters outputClaimIfMatched . Oder NULL, wenn die Zeichenfolgen nicht übereinstimmen. |
OutputClaim | stringCompareResultClaim | boolean | Der Ausgabeanspruchstyp „CompareResult“, der basierend auf dem Ergebnis des Vergleichs auf true oder false festgelegt werden muss. |
Beispiel für SetClaimsIfStringsMatch
Bei der folgenden Anspruchstransformation wird beispielsweise überprüft, ob der Wert des Anspruchs ageGroup gleich Minor
ist. Ist dies der Fall, wird der Wert B2C_V1_90001
zurückgegeben.
<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>
- Eingabeansprüche:
- claimToMatch: Nebenversion
- Eingabeparameter:
- matchTo: Nebenversion
- stringComparison: ordinalIgnoreCase
- outputClaimIfMatched: B2C_V1_90001
- Ausgabeansprüche:
- isMinorResponseCode: true
- isMinor: B2C_V1_90001
StringContains
Bestimmt, ob eine angegebene Teilzeichenfolge im Eingabeanspruch vorhanden ist. Das Ergebnis ist ein neuer boolescher Anspruchs mit dem Wert true
oder false
. true
, wenn der Wert des Parameters in dieser Zeichenfolge vorkommt, andernfalls false
.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Der Anspruchstyp, der gesucht werden soll. |
InputParameter | contains | Zeichenfolge | Der zu suchende Wert. |
InputParameter | ignoreCase | Zeichenfolge | Gibt an, ob bei diesem Vergleich die Groß-/Kleinschreibung in den zu vergleichenden Zeichenfolgen ignoriert werden soll. |
OutputClaim | outputClaim | Zeichenfolge | Der Anspruch, der erstellt wird, nachdem diese Anspruchstransformation aufgerufen wurde. Ein boolescher Indikator, wenn die Teilzeichenfolge innerhalb des Eingabeanspruchs auftritt. |
Beispiel für StringContains
Mithilfe dieser Anspruchstransformation können Sie überprüfen, ob ein Zeichenfolgenanspruchstyp eine Teilzeichenfolge enthält. Im folgenden Beispiel wird überprüft, ob der Zeichenfolgenanspruchstyp roles
den Wert admin enthält.
<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>
- Eingabeansprüche:
- inputClaim: "Admin, Approver, Editor"
- Eingabeparameter:
- contains: "admin,"
- ignoreCase: true
- Ausgabeansprüche:
- outputClaim: true
StringSubstring
Extrahiert Teile eines Zeichenfolgenanspruchstyps ab dem Zeichen an der angegebenen Position und gibt die angegebene Anzahl von Zeichen zurück. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Der Anspruchstyp, der die Zeichenfolge enthält. |
InputParameter | startIndex | INT | Die nullbasierte Anfangsposition einer Teilzeichenfolge in dieser Instanz. |
InputParameter | length | INT | Die Anzahl der Zeichen in der Teilzeichenfolge. |
OutputClaim | outputClaim | Zeichenfolge | Eine Zeichenfolge, die der Teilzeichenfolge mit der Länge ab „startIndex“ in dieser Instanz entspricht, oder „Empty“, wenn „startIndex“ der Länge dieser Instanz entspricht und „length“ Null ist. |
Beispiel für StringSubstring
Ruft z. B. die Länder-/Regionsvorwahl der Telefonnummer ab.
<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>
- Eingabeansprüche:
- inputClaim: "+1644114520"
- Eingabeparameter:
- startIndex: 0
- length: 2
- Ausgabeansprüche:
- outputClaim: "+1"
StringReplace
Durchsucht die Zeichenfolge eine Anspruchstyps nach einem bestimmten Wert und gibt eine neue Zeichenfolge für den Anspruchstyp zurück, in der alle Vorkommen einer bestimmten Zeichenfolge in der aktuellen Zeichenfolge durch eine andere bestimmte Zeichenfolge ersetzt werden.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Der Anspruchstyp, der die Zeichenfolge enthält. |
InputParameter | oldValue | Zeichenfolge | Zu suchende Zeichenfolge. |
InputParameter | newValue | Zeichenfolge | Die Zeichenfolge, die alle Vorkommen von oldValue ersetzen soll |
OutputClaim | outputClaim | boolean | Eine Zeichenfolge, die der aktuellen Zeichenfolge entspricht, nur dass alle Instanzen von „oldValue“ durch „newValue“ ersetzt werden. Wenn „oldValue“ in der aktuellen Instanz nicht gefunden wird, gibt die Methode die aktuelle Instanz unverändert zurück. |
Beispiel für StringReplace
Beispielsweise können Sie eine Telefonnummer normalisieren, indem Sie die Zeichen -
entfernen.
<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>
- Eingabeansprüche:
- inputClaim: "+164-411-452-054"
- Eingabeparameter:
- oldValue: "-"
- newValue: ""
- Ausgabeansprüche:
- outputClaim: "+164411452054"
StringJoin
Verkettet die Elemente eines bestimmten stringCollection-Anspruchstyps und verwendet dazu das angegebene Trennzeichen zwischen jedem Element bzw. Member.
Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | stringCollection | Eine Auflistung, die die zu verkettenden Zeichenfolgen enthält. |
InputParameter | Trennzeichen | Zeichenfolge | Die als Trennzeichen zu verwendende Zeichenfolge, z. B. Komma , . |
OutputClaim | outputClaim | Zeichenfolge | Eine Zeichenfolge, die aus den Membern der Zeichenfolgenauflistung inputClaim besteht, getrennt durch den Eingabeparameter delimiter . |
Beispiel für StringJoin
Im folgenden Beispiel wird eine Zeichenfolgenauflistung von Benutzerrollen in eine Zeichenfolge mit Kommatrennzeichen konvertiert. Mit dieser Methode können Sie eine Zeichenfolgenauflistung im Azure AD B2C-Benutzerkonto speichern. Wenn Sie später das Konto aus dem Verzeichnis lesen, konvertieren Sie die Zeichenfolge mit Kommatrennzeichen mithilfe von StringSplit
zurück in die Zeichenfolgenauflistung.
<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>
- Eingabeansprüche:
- inputClaim:
[ "Admin", "Author", "Reader" ]
- inputClaim:
- Eingabeparameter:
- delimiter: ","
- Ausgabeansprüche:
- outputClaim:
"Admin,Author,Reader"
- outputClaim:
StringSplit
Gibt ein Zeichenfolgenarray zurück, das die Teilzeichenfolgen in dieser Instanz enthält, die durch Elemente einer bestimmten Zeichenfolge getrennt sind. Sehen Sie sich die Livedemo dieser Anspruchstransformation an.
Element | TransformationClaimType | Datentyp | Notizen |
---|---|---|---|
InputClaim | inputClaim | Zeichenfolge | Ein Zeichenfolgenanspruchstyp, der die zu unterteilenden Teilzeichenfolgen enthält. |
InputParameter | Trennzeichen | Zeichenfolge | Die als Trennzeichen zu verwendende Zeichenfolge, z. B. Komma , . |
OutputClaim | outputClaim | stringCollection | Eine Zeichenfolgenauflistung, deren Elemente die Teilzeichenfolgen in dieser Zeichenfolge enthalten, die durch den Eingabeparameter delimiter getrennt sind. |
Hinweis
Alle vorhandenen Elemente in der OutputClaim
-stringCollection werden entfernt.
Beispiel für StringSplit
Im folgenden Beispiel wird eine Zeichenfolge mit durch Kommas getrennten Benutzerrollen in eine Zeichenfolgenauflistung konvertiert.
<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>
- Eingabeansprüche:
- inputClaim:
Admin,Author,Reader
- inputClaim:
- Eingabeparameter:
- delimiter: ","
- Ausgabeansprüche:
- outputClaim:
[ "Admin", "Author", "Reader" ]
- outputClaim:
Transformationsausdrücke für Zeichenfolgenansprüche
Anspruchstransformationsausdrücke in benutzerdefinierten Azure AD B2C-Richtlinien liefern Kontextinformationen zur Mandanten-ID und zur ID des technischen Profils.
Ausdruck | BESCHREIBUNG | Beispiel |
---|---|---|
{TechnicalProfileId} |
Der Name der ID des technischen Profils. | Facebook-OAUTH |
{RelyingPartyTenantId} |
Die Mandanten-ID der Richtlinie für die vertrauende Seite. | Ihr-Mandan.onmicrosoft.com |
{TrustFrameworkTenantId} |
Die Mandanten-ID des Vertrauensframeworks. | Ihr-Mandan.onmicrosoft.com |
Nächste Schritte
- Weitere Beispiele für die Anspruchstransformation finden Sie im GitHub-Repository der Azure-AD-B2C-Community