Transformasi klaim string
Artikel ini memberikan contoh bagaimana menggunakan transformasi klaim string dari skema IEF di Azure Active Directory B2C (Microsoft Azure Active Directory B2C). Untuk informasi selengkapnya, lihat transformasi klaim.
AssertStringClaimsAreEqual
Membandingkan dua klaim, dan memberikan pengecualian jika tidak sama sesuai dengan input perbandingan yang ditentukan inputClaim1, inputClaim2 dan stringComparison.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim1 | string | Jenis klaim pertama, yang akan dibandingkan. |
InputClaim | inputClaim2 | string | Jenis klaim kedua, yang akan dibandingkan. |
InputParameter | stringComparison | string | perbandingan string, salah satu nilai: Ordinal, OrdinalIgnoreCase. |
Transformasi klaim AssertStringClaimsAreEqual selalu dijalankan dari profil teknis validasi yang dipanggil oleh profil teknis yang ditegaskan sendiri, atau DisplayControl. Metadata UserMessageIfClaimsTransformationStringsAreNotEqual
profil teknis yang ditegaskan sendiri mengontrol pesan kesalahan yang disajikan kepada pengguna. Pesan kesalahan dapat dilokalisasi.
Contoh AssertStringClaimsAreEqual
Anda dapat menggunakan transformasi klaim ini untuk memastikan dua klaim memiliki nilai yang sama. Jika tidak, pesan kesalahan akan dilempar. Contoh berikut memeriksa apakah klaim strongAuthenticationEmailAddress sama dengan klaim email. Jika tidak, pesan kesalahan akan dilempar.
<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>
- Klaim input:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- Parameter input:
- stringComparison: ordinalIgnoreCase
- Hasil: Kesalahan diberikan
Memanggil AssertStringClaimsAreEqual mengklaim transformasi
Profil teknis validasi Noninteraktif-masuk memanggil transformasi klaim AssertEmailAndStrongAuthenticationEmailAddressAreEqual.
<TechnicalProfile Id="login-NonInteractive">
...
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="AssertEmailAndStrongAuthenticationEmailAddressAreEqual" />
</OutputClaimsTransformations>
</TechnicalProfile>
Profil teknis yang dibuat sendiri memanggil validasi profil teknis 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
Membuat waktu berdasarkan kata sandi waktu (TOTP) URI. URI adalah kombinasi dari pengidentifikasi unik pengguna, seperti alamat email, dan kunci rahasia. URI kemudian diubah menjadi kode QR yang diberikan kepada pengguna. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | jalan | string | Pengidentifikasi unik pengguna, seperti alamat email, nama pengguna, atau nomor telepon. |
InputClaim | query.secret | string | Kunci rahasia TOTP. |
InputParameter | skema | string | Bagian skema dari URI. Contohnya,otpauth . |
InputParameter | tuan rumah | string | Bagian skema dari URI. Contohnya,totp . |
InputParameter | query.issuer | string | Bagian pengeluar sertifikat dari URI. Contohnya,{AuthenticatorIssuer} . |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Contoh BuildUri
Transformasi klaim berikut menghasilkan URI TOTP yang akan ditampilkan di Kode QR, atau tautan dalam.
<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>
- Klaim input:
- jalur: emily@fabrikam.com
-
query.secret:
fay2lj7ynpntjgqa
- Parameter input:
-
skema:
otpauth
-
host:
totp
-
query.issuer:
{AuthenticatorIssuer}
-
skema:
- Klaim output:
-
outputClaim:
otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo
-
outputClaim:
ChangeCase
Mengubah kasus dari klaim yang disediakan menjadi huruf kecil atau besar tergantung pada operator. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim1 | string | Klaim tersebut yang akan diubah. |
InputParameter | toCase | string | Salah satu nilai berikut: LOWER atau UPPER . |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Contoh ChangeCase
Transformasi klaim berikut mengubah klaim email ke huruf kecil.
<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>
- Klaim input:
- alamat email: SomeOne@contoso.com
- Parameter input:
- toCase: LEBIH KECIL
- Klaim output:
- alamat email: someone@contoso.com
CompareClaims
Menentukan apakah satu klaim untai (karakter) sama dengan klaim yang lain. Hasilnya adalah klaim boolean baru dengan nilai true
atau false
. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim1 | string | Jenis klaim pertama, yang akan dibandingkan. |
InputClaim | inputClaim2 | string | Jenis klaim kedua, yang akan dibandingkan. |
InputParameter | operator | string | Nilai yang mungkin: EQUAL atau NOT EQUAL . |
InputParameter | ignoreCase | string | Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan. |
OutputClaim | outputClaim | Boolean | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Contoh CompareClaims
Gunakan transformasi klaim ini untuk memeriksa apakah suatu klaim sama dengan klaim yang lain. Transformasi klaim berikut memeriksa apakah nilai klaim email identik dengan klaim 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>
- Klaim input:
- inputClaim1: someone@contoso.com
- inputClaim2: someone@outlook.com
- Parameter input:
- operator: TIDAK SAMA
- ignoreCase: benar
- Klaim output:
- outputClaim: benar
CompareClaimToValue
Menentukan apakah nilai klaim sama dengan nilai parameter input. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim1 | string | Jenis klaim, yang akan dibandingkan. |
InputParameter | operator | string | Nilai yang mungkin: EQUAL atau NOT EQUAL . |
InputParameter | compareTo | string | Perbandingan string, salah satu nilai, yaitu string yang nilai klaim inputnya harus dibandingkan dengan: Ordinal, OrdinalIgnoreCase. |
InputParameter | ignoreCase | string | Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan. |
OutputClaim | outputClaim | Boolean | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Contoh CompareClaimToValue
Gunakan transformasi klaim ini untuk memeriksa apakah klaim sama dengan nilai yang Anda tentukan. Misalnya, transformasi klaim berikut ini memeriksa apakah nilai klaim termsOfUseConsentVersion sama dengan 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>
- Klaim input:
- inputClaim1: v1
- Parameter input:
- compareTo: V2
- operator: TIDAK SAMA
- ignoreCase: benar
- Klaim output:
- outputClaim: benar
CopyClaimIfPredicateMatch
Menyalin nilai klaim ke klaim lain jika nilai klaim input cocok dengan predikat klaim output. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim, yang akan disalin. |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. Nilai klaim input diperiksa terhadap predikat klaim ini. |
Contoh CopyClaimIfPredicateMatch
Contoh berikut mencoba menyalin nilai klaim signInName ke klaim phoneNumber. Dalam contoh ini, nilai tidak akan disalin. Klaim signInName tidak dalam format yang diharapkan, nomor telepon. Untuk sampel lengkapnya, lihat kebijakan paket Nomor telepon atau rincian masuk alamat email.
<ClaimsTransformation Id="SetPhoneNumberIfPredicateMatch" TransformationMethod="CopyClaimIfPredicateMatch">
<InputClaims>
<InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="phoneNumber" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Klaim input:
- inputClaim: bob@contoso.com
- Klaim output:
- outputClaim: Klaim output tidak akan diubah dari nilai aslinya.
Contoh CopyClaimIfPredicateMatch yang cocok dengan predikat
Dalam contoh ini, transformasi klaim akan menyalin nilai. Klaim signInName dalam format yang benar, nomor telepon.
- Klaim input:
- inputClaim: +11234567890
- Klaim output:
- outputClaim: +11234567890
CreateOtpSecret
Buat klaim string TOTP. Output dari transformasi klaim ini adalah rahasia TOTP yang kemudian disimpan di akun pengguna Azure Active Directory B2C dan dibagikan dengan aplikasi Microsoft Authenticator. Aplikasi pengautentikasi menggunakan kunci untuk menghasilkan kode TOTP saat pengguna harus melewati MFA. Kebijakan Anda menggunakan kunci untuk memvalidasi kode TOTP yang diberikan oleh pengguna.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
OutputClaim | outputClaim | string | Klaim yang dihasilkan setelah transformasi klaim ini dipanggil, dengan kode TOTP yang dihasilkan. |
Contoh CreateOtpSecret
Transformasi klaim berikut membuat rahasia untuk pengautentikasi multi-faktor TOTP.
<ClaimsTransformation Id="CreateSecret" TransformationMethod="CreateOtpSecret">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="secretKey" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Klaim output:
-
outputClaim:
hmlcmd4ph6fph64c
-
outputClaim:
CreateRandomString
Membuat string acak menggunakan generator angka acak. Jika generator angka acak adalah jenis integer
, secara opsional parameter nilai awal dan angka maksimum dapat tersedia. Parameter format string opsional memungkinkan output diformat menggunakannya, dan parameter base64 opsional menentukan apakah output adalah randomGeneratorType yang dikodekan base64 [guid, bilangan bulat] outputClaim (String).
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputParameter | randomGeneratorType | string | Menentukan nilai acak yang akan dihasilkan, GUID (ID unik global) atau INTEGER (angka). |
InputParameter | stringFormat | string | [Opsional] Format nilai acak. |
InputParameter | base64 | Boolean | [Opsional] Konversikan nilai acak ke base64. Jika format string diterapkan, nilai setelah format string dikodekan ke base64. |
InputParameter | maximumNumber | int | [Opsional] Hanya untuk INTEGER randomGeneratorType. Tentukan angka maksimum. |
InputParameter | seed | int | [Opsional] Hanya untuk INTEGER randomGeneratorType. Tentukan nilai awal untuk nilai acak. Catatan: nilai awal yang sama menghasilkan urutan angka acak. |
OutputClaim | outputClaim | string | Klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. Nilai acak. |
Contoh CreateRandomString
Contoh berikut menghasilkan ID unik global. Transformasi klaim ini digunakan untuk membuat UPN (User Principle Name/Nama Prinsipal Pengguna) acak.
<ClaimsTransformation Id="CreateRandomUPNUserName" TransformationMethod="CreateRandomString">
<InputParameters>
<InputParameter Id="randomGeneratorType" DataType="string" Value="GUID" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="upnUserName" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Parameter input:
- randomGeneratorType: GUID
- Klaim output:
- outputClaim: bc8bedd2-aaa3-411e-bdee-2f1810b73dfc
Contoh CreateRandomString membuat nilai numerik
Contoh berikut menghasilkan nilai acak bilangan bulat antara 0 dan 1000. Nilai diformat ke OTP_{nilai acak}.
<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>
- Parameter input:
- randomGeneratorType: BILANGAN BULAT
- maximumNumber: 1000
- stringFormat: OTP_{0}
- base64: salah
- Klaim output:
- outputClaim: OTP_853
CreateStringClaim
Membuat klaim string dari parameter input yang disediakan dalam transformasi. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputParameter | value | string | String yang akan diatur. Parameter input ini mendukung ekspresi transformasi klaim string. |
OutputClaim | createdClaim | string | Klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil, dengan nilai yang ditentukan dalam parameter input. |
Contoh CreateStringClaim
Transformasi klaim berikut menciptakan nilai untai (karakter) dengan persyaratan layanan.
<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>
- Parameter input:
- nilai: Contoso terms of service...
- Klaim output:
- createdClaim: Klaim TOS berisi nilai "Ketentuan layanan Contoso...".
FormatLocalizedString
Memformat beberapa klaim berdasarkan untai (karakter) format yang dilokalkan yang tersedia. Transformasi ini menggunakan metode String.Format
C#. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaims | string | Kumpulan klaim input yang bertindak sebagai parameter {0}, {1}, {2} format string. | |
InputParameter | stringFormatId | string |
StringId dari string yang dilokalkan. |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Catatan
Tidak ada batasan jumlah klaim input yang dapat Anda tentukan, tetapi panjang maksimum string yang diformat adalah 4000.
Untuk menggunakan transformasi klaim FormatLocalizedString:
- Tentukan string pelokalan,dan kaitkan dengan profil teknis yang ditegaskan sendiri.
-
ElementType
dari elemenLocalizedString
harus diatur keFormatLocalizedStringTransformationClaimType
. -
StringId
adalah pengenal unik yang Anda definisikan, dan gunakan nanti dalamstringFormatId
transformasi klaim Anda. - Dalam transformasi klaim, tentukan daftar klaim yang akan diatur dengan string yang dilokalkan. Kemudian atur
stringFormatId
keStringId
dari elemen string yang dilokalkan. - Dalam profil teknis yang ditegaskan sendiri, atau input tampilan kontrol atau transformasi klaim output, buat referensi ke transformasi klaim Anda.
Contoh FormatLocalizedString
Contoh berikut menghasilkan pesan kesalahan ketika akun sudah berada di direktori. Contohnya mendefinisikan string yang dilokalkan untuk bahasa Inggris (default) dan Spanyol.
<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="ResponseMessage_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="ResponseMessage_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>
Transformasi klaim membuat pesan respons berdasarkan string yang dilokalkan. Pesan berisi alamat email pengguna yang disematkan ke dalam sengatan yang dilokalkan ResponseMessage_EmailExists.
<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessage_EmailExists" />
</InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- Klaim input:
- inputClaim: sarah@contoso.com
- Parameter input:
- stringFormat: ResponseMessage_EmailExists
- Klaim output:
- outputClaim: Alamat email 'sarah@contoso.com' sudah menjadi akun di organisasi ini. Pilih Berikutnya untuk masuk dengan akun tersebut.
FormatStringClaim
Memformat klaim berdasarkan untai (karakter) format yang tersedia. Transformasi ini menggunakan metode String.Format
C#. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Klaim yang bertindak sebagai parameter {0} format untai (karakter). |
InputParameter | stringFormat | string | Format string, termasuk parameter {0}. Parameter input ini mendukung ekspresi transformasi klaim string. |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Catatan
Format string ukuran maksimum yang diperbolehkan adalah 4000.
Contoh FormatStringClaim
Gunakan transformasi klaim ini untuk memformat string apa pun dengan satu {0} parameter. Contoh berikut membuat userPrincipalName. Semua profil teknis IdP sosial, seperti Facebook-OAUTH
memanggil CreateUserPrincipalName untuk menghasilkan 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>
- Klaim input:
- inputClaim: 5164db16-3eee-4629-bfda-dcc3326790e9
- Parameter input:
- stringFormat: cpim_ {0} @{RelyingPartyTenantId}
- Klaim output:
- outputClaim: cpim_5164db16-3eee-4629-bfda-dcc3326790e9@b2cdemo.onmicrosoft.com
FormatStringMultipleClaims
Memformat dua klaim sesuai dengan untai (karakter) format yang tersedia. Transformasi ini menggunakan metode String.Format
C#. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim1 | string | Klaim yang bertindak sebagai parameter {0} format untai (karakter). |
InputClaim | inputClaim2 | string | Klaim yang bertindak sebagai parameter {1} format untai (karakter). |
InputParameter | stringFormat | string | Format string, termasuk parameter {0} dan {1}. Parameter input ini mendukung ekspresi transformasi klaim string. |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Catatan
Format string ukuran maksimum yang diperbolehkan adalah 4000.
Contoh FormatStringMultipleClaims
Gunakan transformasi klaim ini untuk memformat string apa pun dengan dua parameter, {0} dan {1}. Contoh berikut membuat Namatampilan dengan format yang ditentukan:
<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>
- Klaim input:
- inputClaim1: Joe
- inputClaim2: Fernando
- Parameter input:
- stringFormat: {0}{1}
- Klaim output:
- outputClaim: Joe Fernando
GetLocalizedStringsTransformation
Menyalin string yang dilokalkan ke dalam klaim. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
OutputClaim | Nama string yang dilokalkan | string | Daftar jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. |
Untuk menggunakan transformasi klaim GetLocalizedStringsTransformation:
Tentukan pelokalan string untuk definisi konten Anda, seperti
api.selfasserted
.ElementType
dari elemenLocalizedString
harus diatur keGetLocalizedStringsTransformationClaimType
.StringId
adalah pengenal unik yang Anda definisikan, dan gunakan nanti dalam transformasi klaim Anda.Dalam transformasi klaim, tentukan daftar klaim yang akan diatur dengan string yang dilokalkan.
ClaimTypeReferenceId
adalah referensi ke klaim yang sudah ditentukan di bagian ClaimsSchema dalam kebijakan.TransformationClaimType
adalah nama string yang dilokalkan seperti yang didefinisikan dalamStringId
dari elemenLocalizedString
.Dalam menegaskan sendiri, atau mengklaim transformasi profil teknis transformasi klaim profil teknis, membuat referensi untuk transformasi klaim Anda.
Kaitkan profil teknis dengan definisi konten, seperti
api.selfasserted
. Contoh berikut menunjukkan cara mengaitkan profil teknis denganapi.selfasserted
definisi konten.<Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> </Metadata>
Diagram berikut menunjukkan cara mengonfigurasi transformasi klaim dengan elemen lokalisasi:
Contoh GetLocalizedStringsTransformation
Contoh berikut mencari subjek email, isi, pesan kode Anda, dan tanda tangan alamat email, dari string yang dilokalkan. Klaim tersebut kemudian digunakan oleh templat verifikasi email kustom.
Tentukan string yang dilokalkan untuk bahasa Inggris (default) dan Spanyol.
<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>
Transformasi klaim mengatur nilai subjek jenis klaim dengan nilai 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>
- Klaim output:
- subjek: Kode verifikasi alamat email akun Contoso
- pesan: Terima kasih telah memverifikasi akun Anda!
- codeIntro: Kode Anda adalah
- tanda tangan: Hormat Kami
GetMappedValueFromLocalizedCollection
Memetakan elemen dari kumpulan Pembatasan klaim input. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | mapFromClaim | string | Klaim yang berisi teks akan dicari dalam klaim restrictionValueClaim dengan kumpulan Pembatasan. |
OutputClaim | restrictionValueClaim | string | Klaim yang berisi kumpulan Pembatasan. Setelah transformasi klaim telah dipanggil, nilai klaim ini berisi nilai item yang dipilih. |
Contoh GetMappedValueFromLocalizedCollection
Contoh berikut mencari deskripsi pesan kesalahan berdasarkan kunci kesalahan. Klaim responseMsg berisi kumpulan pesan kesalahan untuk disajikan kepada pengguna akhir atau dikirim ke pihak pengandal.
<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>
Transformasi klaim mencari teks item dan mengembalikan nilainya. Jika pembatasan dilokalkan menggunakan <LocalizedCollection>
, transformasi klaim mengembalikan nilai yang dilokalkan.
<ClaimsTransformation Id="GetResponseMsgMappedToResponseCode" TransformationMethod="GetMappedValueFromLocalizedCollection">
<InputClaims>
<InputClaim ClaimTypeReferenceId="responseCode" TransformationClaimType="mapFromClaim" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="restrictionValueClaim" />
</OutputClaims>
</ClaimsTransformation>
- Klaim input:
- mapFromClaim: B2C_V1_90001
- Klaim output:
- restrictionValueClaim: Anda tidak dapat masuk karena Anda masih di bawah umur.
LookupValue
Mencari nilai klaim dari daftar nilai berdasarkan nilai klaim yang lain. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputParameterId | string | Klaim yang berisi nilai pencarian |
InputParameter | string | Kumpulan Parameterinput. | |
InputParameter | errorOnFailedLookup | Boolean | Mengontrol apakah ada kesalahan yang dikembalikan ketika tidak ada pencarian yang cocok. |
OutputClaim | outputClaim | string | Klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. Nilai pencocokan Id . |
Contoh LookupValue
Contoh berikut mencari nama domain di salah satu kumpulan inputParameter. Transformasi klaim mencari nama domain di pengidentifikasi dan mengembalikan nilainya (ID aplikasi).
<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>
- Klaim input:
- inputParameterId: test.com
- Parameter input:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: salah
- Klaim output:
- outputClaim: c7026f88-4299-4cdb-965d-3f166464b8a9
Contoh LookupValue dengan kesalahan
Ketika parameter input errorOnFailedLookup
diatur ke true
, transformasi klaim LookupValue selalu dijalankan dari profil teknis validasi yang dipanggil oleh profil teknis yang ditegaskan sendiri, atau DisplayConrtol. Metadata LookupNotFound
profil teknis yang ditegaskan sendiri mengontrol pesan kesalahan yang disajikan kepada pengguna.
Contoh berikut mencari nama domain di salah satu kumpulan inputParameter. Transformasi klaim mencari nama domain di pengidentifikasi dan mengembalikan nilainya (ID aplikasi), atau memunculkan pesan kesalahan.
<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>
- Klaim input:
- inputParameterId: live.com
- Parameter input:
- contoso.com: 13c15f79-8fb1-4e29-a6c9-be0d36ff19f1
- microsoft.com: 0213308f-17cb-4398-b97e-01da7bd4804e
- test.com: c7026f88-4299-4cdb-965d-3f166464b8a9
- errorOnFailedLookup: benar
- Kesalahan:
- Tidak ada kecocokan yang ditemukan untuk nilai klaim input dalam daftar ID parameter input dan errorOnFailedLookup adalah benar.
NullClaim
Membersihkan nilai klaim yang diberikan. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
OutputClaim | klaim_ke_null | string | Nilai klaim diatur ke NULL. |
Contoh NullClaim
Gunakan transformasi klaim ini untuk menghapus data yang tidak perlu dari kantong properti klaim sehingga cookie sesi akan lebih kecil. Contoh berikut menghapus nilai jenis klaim TermsOfService
.
<ClaimsTransformation Id="SetTOSToNull" TransformationMethod="NullClaim">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="TermsOfService" TransformationClaimType="claim_to_null" />
</OutputClaims>
</ClaimsTransformation>
- Klaim input:
- outputClaim: Selamat datang di Aplikasi Contoso. Jika Anda terus menelusuri dan menggunakan situs web ini, Anda setuju untuk mematuhi dan terikat oleh syarat dan ketentuan berikut...
- Klaim output:
- outputClaim: NULL
ParseDomain
Dapatkan bagian domain dari alamat email. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | alamatEmail | string | ClaimType yang berisi alamat email. |
OutputClaim | domain | string | Klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil - domain. |
Contoh ParseDomain
Gunakan transformasi klaim ini untuk memilah nama domain setelah simbol pengguna @. Transformasi klaim berikut menunjukkan cara memilah nama domain dari klaim alamat email.
<ClaimsTransformation Id="SetDomainName" TransformationMethod="ParseDomain">
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" TransformationClaimType="emailAddress" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="domainName" TransformationClaimType="domain" />
</OutputClaims>
</ClaimsTransformation>
- Klaim input:
- Alamatemail: joe@outlook.com
- Klaim output:
- domain: outlook.com
SetClaimIfBooleansMatch
Periksa apakah klaim boolean adalah true
, atau false
. Jika ya, tetapkan klaim output dengan nilai yang ada dalam outputClaimIfMatched
parameter input. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | claimToMatch | string | Jenis klaim, yang akan dicek. Nilai null memberikan pengecualian. |
InputParameter | matchTo | string | Nilai yang akan dibandingan dengan claimToMatch klaim input. Kemungkinan nilai: true , atau false . |
InputParameter | outputClaimIfMatched | string | Nilai yang akan ditetapkan jika klaim input sama dengan matchTo parameter input. |
OutputClaim | outputClaim | string | Jika claimToMatch klaim input sama dengan matchTo parameter input, klaim output ini berisi nilai outputClaimIfMatched parameter input. |
Contoh SetClaimIfBooleansMatch
Misalnya, transformasi klaim berikut ini memeriksa apakah nilai klaim hasPromotionCode sama dengan true
. Jika ya, kembalikan nilai menjadi Kode promosi tidak ditemukan.
<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>
- Klaim input:
- claimToMatch: true
- Parameter input:
- matchTo: true
- outputClaimIfMatched: "Kode promosi tidak ditemukan."
- Klaim output:
- outputClaim: "Kode promosi tidak ditemukan."
SetClaimsIfRegexMatch
Memeriksa apakah parameter input claimToMatch
dan matchTo
klaim string sama, dan menyetel klaim output dengan nilai yang ada dalam parameter input outputClaimIfMatched
, bersama dengan klaim output hasil bandingkan, yang akan ditetapkan sebagai true
atau false
berdasarkan hasil perbandingan.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
inputClaim | claimToMatch | string | Jenis klaim, yang akan dibandingkan. |
InputParameter | matchTo | string | Regex yang akan dicocokkan. |
InputParameter | outputClaimIfMatched | string | Nilai yang akan ditetapkan jika string sama. |
InputParameter | extractGroups | Boolean | [Opsional] Menentukan apakah kecocokan Regex harus mengekstrak nilai grup. Nilai yang mungkin: true , atau false (default). |
OutputClaim | outputClaim | string | Jika regex cocok, klaim output ini berisi nilai parameter input outputClaimIfMatched . Atau null, jika tidak ada kecocokan. |
OutputClaim | regexCompareResultClaim | Boolean | Regex cocok dengan jenis klaim output hasil, yang akan diatur sebagai true atau false berdasarkan hasil pencocokan. |
OutputClaim | Nama klaim | string | Jika parameter input extractGroups diatur ke benar, daftar jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. Nama klaim harus cocok dengan nama grup Regex. |
Contoh SetClaimsIfRegexMatch
Memeriksa apakah nomor telepon yang tersedia valid, berdasarkan pola regex nomor telepon.
<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>
- Klaim input:
- claimToMatch: "64854114520"
- Parameter input:
- matchTo: "^[0-9] {4,16}$"
- outputClaimIfMatched: "Ponsel"
- Klaim output:
- outputClaim: "iPhone"
- regexCompareResultClaim: benar
Contoh SetClaimsIfRegexMatch dengan grup ekstrak
Memeriksa apakah alamat email yang tersedia valid, dan mengembalikan alias alamat email. Lihat demo Langsung dari transformasi klaim ini.
<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>
- Klaim input:
- claimToMatch: "emily@contoso.com"
- Parameter input:
-
matchTo:
(?<mailAlias>.*)@(.*)$
- outputClaimIfMatched: "isEmail"
- extractGroups: benar
-
matchTo:
- Klaim output:
- outputClaim: "isEmail"
- regexCompareResultClaim: benar
- mailAlias: emily
SetClaimsIfStringsAreEqual
Memeriksa bahwa klaim string serta input parameter matchTo
sama, dan menetapkan klaim output dengan nilai yang ada dalam parameter input stringMatchMsg
dan stringMatchMsgCode
, bersama dengan membandingkan klaim output hasil, yang akan ditetapkan sebagai true
atau false
berdasarkan hasil perbandingan.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim, yang akan dibandingkan. |
InputParameter | matchTo | string | String yang akan dibandingkan dengan inputClaim . |
InputParameter | stringComparison | string | Nilai yang mungkin: Ordinal atau OrdinalIgnoreCase . |
InputParameter | stringMatchMsg | string | Nilai pertama yang akan ditetapkan jika string sama. |
InputParameter | stringMatchMsgCode | string | Nilai kedua yang akan ditetapkan jika string sama. |
OutputClaim | outputClaim1 | string | Jika string sama, klaim output ini berisi nilai parameter input stringMatchMsg . |
OutputClaim | outputClaim2 | string | Jika string sama, klaim output ini berisi nilai parameter input stringMatchMsgCode . |
OutputClaim | stringCompareResultClaim | Boolean | Jenis klaim output hasil perbandingan, yang akan ditetapkan sebagai true atau false berdasarkan hasil perbandingan. |
Contoh SetClaimsIfStringsAreEqual
Anda dapat menggunakan transformasi klaim ini untuk memeriksa apakah klaim sama dengan nilai yang Anda tentukan. Misalnya, transformasi klaim berikut ini memeriksa apakah nilai klaim termsOfUseConsentVersion sama dengan v1
. Jika ya, ubah nilainya menjadi 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>
- Klaim input:
- inputClaim: v1
- Parameter input:
- matchTo: V1
- stringComparison: ordinalIgnoreCase
- stringMatchMsgCode: B2C_V1_90005
- stringMatchMsg: TOS ditingkatkan ke v2
- Klaim output:
- outputClaim1: B2C_V1_90005
- outputClaim2: TOS ditingkatkan ke v2
- stringCompareResultClaim: benar
SetClaimsIfStringsMatch
Memeriksa bahwa klaim string dan parameter input matchTo
sama, dan menetapkan klaim output dengan nilai yang ada di dalam input parameter outputClaimIfMatched
, bersama dengan membandingkan klaim output hasil, yang akan ditetapkan sebagai true
atau false
berdasarkan hasil perbandingan.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | claimToMatch | string | Jenis klaim, yang akan dibandingkan. |
InputParameter | matchTo | string | Untai yang akan dibandingkan dengan inputClaim. |
InputParameter | stringComparison | string | Nilai yang mungkin: Ordinal atau OrdinalIgnoreCase . |
InputParameter | outputClaimIfMatched | string | Nilai yang akan ditetapkan jika string sama. |
OutputClaim | outputClaim | string | Jika string sama, klaim output ini berisi nilai parameter input outputClaimIfMatched . Atau null, jika string tidak cocok. |
OutputClaim | stringCompareResultClaim | Boolean | Jenis klaim output hasil perbandingan, yang akan ditetapkan sebagai true atau false berdasarkan hasil perbandingan. |
Contoh SetClaimsIfStringsMatch
Misalnya, transformasi klaim berikut ini memeriksa apakah nilai klaim ageGroup sama dengan Minor
. Jika ya, kembalikan nilainya ke 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>
- Klaim input:
- claimToMatch: Minor
- Parameter input:
- matchTo: Minor
- stringComparison: ordinalIgnoreCase
- outputClaimIfMatched: B2C_V1_90001
- Klaim output:
- isMinorResponseCode: true
- isMinor: B2C_V1_90001
StringContains
Menentukan apakah substring yang ditentukan muncul dalam klaim input. Hasilnya adalah klaim boolean baru dengan nilai true
atau false
.
true
jika parameter nilai terjadi di dalam string ini, jika tidak, false
.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim, yang akan dicari. |
InputParameter | mengandung | string | Nilai untuk dicari. |
InputParameter | ignoreCase | string | Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan. |
OutputClaim | outputClaim | string | Jenis klaim yang dihasilkan setelah transformasi klaim ini telah dipanggil. Indikator boolean jika substring terjadi dalam klaim input. |
Contoh StringContains
Gunakan transformasi klaim ini untuk memeriksa apakah jenis klaim string berisi substring. Contoh berikut memeriksa apakah roles
jenis klaim string berisi nilai 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>
- Klaim input:
- inputClaim: "Admin, Pemberi izin, Penyunting"
- Parameter input:
- berisi: "admin,"
- ignoreCase: benar
- Klaim output:
- outputClaim: benar
StringSubstring
Mengekstrak bagian dari jenis klaim string, dimulai pada karakter pada posisi yang ditentukan, dan mengembalikan jumlah karakter yang ditentukan. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim, yang berisi string. |
InputParameter | startIndex | int | Posisi karakter awal substring berbasis nol dalam instans ini. |
InputParameter | length | int | Jumlah karakter untuk substring. |
OutputClaim | outputClaim | string | String yang setara dengan substring panjang yang dimulai pada startIndex dalam instans ini, atau Kosong jika startIndex sama dengan panjang instans ini dan panjangnya adalah nol. |
Contoh StringSubstring
Misalnya, dapatkan nomor telepon/prefiks wilayah.
<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>
- Klaim input:
- inputClaim: "+1644114520"
- Parameter input:
- startIndex: 0
- panjang: 2
- Klaim output:
- outputClaim: "+1"
StringReplace
Mencari string jenis klaim untuk nilai tertentu, dan mengembalikan string jenis klaim baru di mana semua kemunculan string tertentu dalam string saat ini diganti dengan string tertentu lainnya.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim, yang berisi string. |
InputParameter | oldValue | string | String yang akan dicari. |
InputParameter | newValue | string | String untuk menggantikan semua kemunculan oldValue |
OutputClaim | outputClaim | Boolean | String yang setara dengan string saat ini kecuali bahwa semua instans oldValue diganti dengan newValue. Jika oldValue tidak ditemukan dalam instans saat ini, metode mengembalikan instans saat ini tidak berubah. |
Contoh StringReplace
Misalnya, menormalkan nomor telepon, dengan menghapus karakter -
<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>
- Klaim input:
- inputClaim: "+164-411-452-054"
- Parameter input:
- oldValue: "-"
- newValue: ""
- Klaim output:
- outputClaim: "+164411452054"
StringJoin
Menggabungkan elemen dari jenis klaim kumpulan string yang ditentukan, menggunakan pemisah yang ditentukan antara setiap elemen atau anggota.
Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | stringCollection | Kumpulan yang berisi string untuk digabungkan. |
InputParameter | delimiter | string | String yang digunakan sebagai pemisah, seperti , koma. |
OutputClaim | outputClaim | string | String yang terdiri dari anggota kumpulan string inputClaim , dibatasi oleh parameter input delimiter . |
Contoh StringJoin
Contoh berikut mengambil kumpulan string peran pengguna, dan mengonversinya menjadi string pembatas koma. Anda dapat menggunakan metode ini untuk menyimpan koleksi string di akun pengguna Azure AD B2C. Kemudian, ketika Anda membaca akun dari direktori, gunakan StringSplit
untuk mengonversi kembali string pembatas koma ke kumpulan string.
<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>
- Klaim input:
-
inputClaim:
[ "Admin", "Author", "Reader" ]
-
inputClaim:
- Parameter input:
- pemisah: ","
- Klaim output:
-
outputClaim:
"Admin,Author,Reader"
-
outputClaim:
StringSplit
Mengembalikan array string yang berisi substring dalam instans ini yang dibatasi oleh elemen string tertentu. Lihat demo Langsung dari transformasi klaim ini.
Elemen | TransformationClaimType | Jenis Data | Catatan |
---|---|---|---|
InputClaim | inputClaim | string | Jenis klaim string yang berisi sub string untuk dipisahkan. |
InputParameter | delimiter | string | String yang digunakan sebagai pemisah, seperti , koma. |
OutputClaim | outputClaim | stringCollection | Kumpulan string yang elemennya berisi substring dalam string ini yang dibatasi oleh delimiter parameter input. |
Catatan
Semua elemen yang sudah ada di stringCollection OutputClaim
akan dihapus.
Contoh StringSplit
Contoh berikut mengambil string pemisah koma dari peran pengguna, dan mengonversinya menjadi kumpulan string.
<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>
- Klaim input:
-
inputClaim:
Admin,Author,Reader
-
inputClaim:
- Parameter input:
- pemisah: ","
- Klaim output:
-
outputClaim:
[ "Admin", "Author", "Reader" ]
-
outputClaim:
Ekspresi transformasi klaim string
Ekspresi transformasi klaim dalam kebijakan kustom Azure AD B2C memberikan informasi konteks tentang ID penyewa dan ID profil teknis.
Ekspresi | Deskripsi | Contoh |
---|---|---|
{TechnicalProfileId} |
Nama profile Id teknis. | Facebook-OAUTH |
{RelyingPartyTenantId} |
ID penyewa dari kebijakan pihak pengandal. | your-tenant.onmicrosoft.com |
{TrustFrameworkTenantId} |
ID penyewa kerangka kerja kepercayaan. | your-tenant.onmicrosoft.com |
Langkah berikutnya
- Temukan lebih banyak sampel transformasi klaim pada komunitas repositori GitHub Azure AD B2C