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.

Diagram shows how to use the assert string claims are equal claims transformation.

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}
  • Klaim output:
    • outputClaim: otpauth://totp/Contoso%20demo:emily@fabrikam.com?secret=fay2lj7ynpntjgqa&issuer=Contoso+demo

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 nilainya: 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

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:

  1. Tentukan string pelokalan,dan kaitkan dengan profil teknis yang ditegaskan sendiri.
  2. ElementType dari elemen LocalizedString harus diatur ke FormatLocalizedStringTransformationClaimType.
  3. StringId adalah pengenal unik yang Anda definisikan, dan gunakan nanti dalam stringFormatId transformasi klaim Anda.
  4. Dalam transformasi klaim, tentukan daftar klaim yang akan diatur dengan string yang dilokalkan. Kemudian atur stringFormatId ke StringId dari elemen string yang dilokalkan.
  5. 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="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>

Transformasi klaim membuat pesan respons berdasarkan string yang dilokalkan. Pesan berisi alamat email pengguna yang disematkan ke dalam string yang dilokalkan ResponseMessge_EmailExists.

<ClaimsTransformation Id="SetResponseMessageForEmailAlreadyExists" TransformationMethod="FormatLocalizedString">
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" />
  </InputClaims>
  <InputParameters>
    <InputParameter Id="stringFormatId" DataType="string" Value="ResponseMessge_EmailExists" />
  </InputParameters>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="responseMsg" TransformationClaimType="outputClaim" />
  </OutputClaims>
</ClaimsTransformation>
  • Klaim input:
    • inputClaim: sarah@contoso.com
  • Parameter input:
    • stringFormat: ResponseMessge_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:

  1. Tentukan pelokalan string untuk definisi konten Anda, seperti api.selfasserted.

  2. ElementType dari elemen LocalizedString harus diatur ke GetLocalizedStringsTransformationClaimType.

  3. StringId adalah pengenal unik yang Anda definisikan, dan gunakan nanti dalam transformasi klaim Anda.

  4. 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 dalam StringId dari elemen LocalizedString.

  5. Dalam menegaskan sendiri, atau mengklaim transformasi profil teknis transformasi klaim profil teknis, membuat referensi untuk transformasi klaim Anda.

  6. Kaitkan profil teknis dengan definisi konten, seperti api.selfasserted. Contoh berikut menunjukkan cara mengaitkan profil teknis dengan api.selfasserted definisi konten.

    <Metadata>
      <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item>
    </Metadata>
    

Diagram berikut menunjukkan cara mengonfigurasi transformasi klaim dengan elemen lokalisasi:

Diagram shows how to use the get localized strings claims transformation.

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 StringIdemail_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.

Diagram shows how to use the lookup value claims transformation.

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="(?&lt;mailAlias&gt;.*)@(.*)$" />
    <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: (?&lt;mailAlias&gt;.*)@(.*)$
    • outputClaimIfMatched: "isEmail"
    • extractGroups: benar
  • 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" ]
  • Parameter input:
    • pemisah: ","
  • Klaim output:
    • outputClaim: "Admin,Author,Reader"

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
  • Parameter input:
    • pemisah: ","
  • Klaim output:
    • outputClaim: [ "Admin", "Author", "Reader" ]

Ekspresi transformasi klaim string

Ekspresi transformasi klaim dalam kebijakan kustom Azure AD B2C memberikan informasi konteks tentang ID penyewa dan ID profil teknis.

Expression 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