Bagikan melalui


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
Klaim Masukan masukanKlaim1 benang Jenis klaim pertama, yang akan dibandingkan.
Klaim Masukan masukanKlaim2 benang Jenis klaim kedua, yang akan dibandingkan.
Parameter Masukan perbandingan string benang 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 menunjukkan cara menggunakan pernyataan string, klaim adalah transformasi klaim yang sama.

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
Klaim Masukan jalan benang Pengidentifikasi unik pengguna, seperti alamat email, nama pengguna, atau nomor telepon.
Klaim Masukan query.secret benang Kunci rahasia TOTP.
Parameter Masukan skema benang Bagian skema dari URI. Contohnya,otpauth.
Parameter Masukan tuan rumah benang Bagian skema dari URI. Contohnya,totp.
Parameter Masukan query.issuer benang Bagian pengeluar sertifikat dari URI. Contohnya,{AuthenticatorIssuer}.
Klaim Keluaran outputKlaim benang 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:
    • outputKlaim: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
Klaim Masukan masukanKlaim1 benang Klaim tersebut yang akan diubah.
Parameter Masukan toCase benang Salah satu nilai berikut: LOWER atau UPPER.
Klaim Keluaran outputKlaim benang 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
Klaim Masukan masukanKlaim1 benang Jenis klaim pertama, yang akan dibandingkan.
Klaim Masukan masukanKlaim2 benang Jenis klaim kedua, yang akan dibandingkan.
Parameter Masukan pengendali benang Nilai yang mungkin: EQUAL atau NOT EQUAL.
Parameter Masukan abaikanKasus benang Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan.
Klaim Keluaran outputKlaim 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
Klaim Masukan masukanKlaim1 benang Jenis klaim, yang akan dibandingkan.
Parameter Masukan pengendali benang Nilai yang mungkin: EQUAL atau NOT EQUAL.
Parameter Masukan bandingkan Ke benang Perbandingan string, salah satu nilai, yaitu string yang nilai klaim inputnya harus dibandingkan dengan: Ordinal, OrdinalIgnoreCase.
Parameter Masukan abaikanKasus benang Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan.
Klaim Keluaran outputKlaim 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
Klaim Masukan inputKlaim benang Jenis klaim, yang akan disalin.
Klaim Keluaran outputKlaim benang 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:
    • masukanKlaim: 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:
    • outputKlaim: +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
Klaim Keluaran outputKlaim benang 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:
    • outputKlaim: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
Parameter Masukan randomGeneratorType benang Menentukan nilai acak yang akan dihasilkan, GUID (ID unik global) atau INTEGER (angka).
Parameter Masukan stringFormat benang [Opsional] Format nilai acak.
Parameter Masukan base64 Boolean [Opsional] Konversikan nilai acak ke base64. Jika format string diterapkan, nilai setelah format string dikodekan ke base64.
Parameter Masukan maximumNumber int (integer) [Opsional] Hanya untuk INTEGER randomGeneratorType. Tentukan angka maksimum.
Parameter Masukan benih int (integer) [Opsional] Hanya untuk INTEGER randomGeneratorType. Tentukan nilai awal untuk nilai acak. Catatan: nilai awal yang sama menghasilkan urutan angka acak.
Klaim Keluaran outputKlaim benang 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
Parameter Masukan nilai benang String yang akan diatur. Parameter input ini mendukung ekspresi transformasi klaim string.
Klaim Keluaran createClaim benang 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
Klaim Masukan benang Kumpulan klaim input yang bertindak sebagai parameter {0}, {1}, {2} format string.
Parameter Masukan stringFormatId benang StringId dari string yang dilokalkan.
Klaim Keluaran outputKlaim benang 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="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 string 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:
    • masukanKlaim: 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
Klaim Masukan inputKlaim benang Klaim yang bertindak sebagai parameter {0} format untai (karakter).
Parameter Masukan stringFormat benang Format string, termasuk parameter {0}. Parameter input ini mendukung ekspresi transformasi klaim string.
Klaim Keluaran outputKlaim benang 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:
    • outputKlaim: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
Klaim Masukan masukanKlaim1 benang Klaim yang bertindak sebagai parameter {0} format untai (karakter).
Klaim Masukan masukanKlaim2 benang Klaim yang bertindak sebagai parameter {1} format untai (karakter).
Parameter Masukan stringFormat benang Format string, termasuk parameter {0} dan {1}. Parameter input ini mendukung ekspresi transformasi klaim string.
Klaim Keluaran outputKlaim benang 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
Klaim Keluaran Nama string yang dilokalkan benang 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 menunjukkan cara menggunakan transformasi klaim mendapatkan string yang dilokalkan.

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
Klaim Masukan mapFromClaim benang Klaim yang berisi teks akan dicari dalam klaim restrictionValueClaim dengan kumpulan Pembatasan.
Klaim Keluaran restrictionValueClaim benang 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.

NilaiPencarian

Mencari nilai klaim dari daftar nilai berdasarkan nilai klaim yang lain. Lihat demo Langsung dari transformasi klaim ini.

Elemen TransformationClaimType Jenis Data Catatan
Klaim Masukan inputParameterId benang Klaim yang berisi nilai pencarian
Parameter Masukan benang Kumpulan Parameterinput.
Parameter Masukan errorOnFailedLookup Boolean Mengontrol apakah ada kesalahan yang dikembalikan ketika tidak ada pencarian yang cocok.
Klaim Keluaran outputKlaim benang 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.

Bagan menunjukkan cara menggunakan transformasi klaim nilai pencarian.

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
Klaim Keluaran klaim_ke_null benang 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
Klaim Masukan alamatEmail benang ClaimType yang berisi alamat email.
Klaim Keluaran bidang benang 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
Klaim Masukan claimToMatch benang Jenis klaim, yang akan dicek. Nilai null memberikan pengecualian.
Parameter Masukan matchTo benang Nilai yang akan dibandingan dengan claimToMatch klaim input. Kemungkinan nilai: true, atau false.
Parameter Masukan outputClaimIfMatched benang Nilai yang akan ditetapkan jika klaim input sama dengan matchTo parameter input.
Klaim Keluaran outputKlaim benang 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
inputKlaim claimToMatch benang Jenis klaim, yang akan dibandingkan.
Parameter Masukan matchTo benang Regex yang akan dicocokkan.
Parameter Masukan outputClaimIfMatched benang Nilai yang akan ditetapkan jika string sama.
Parameter Masukan extractGroups Boolean [Opsional] Menentukan apakah kecocokan Regex harus mengekstrak nilai grup. Nilai yang mungkin: true, atau false (default).
Klaim Keluaran outputKlaim benang Jika regex cocok, klaim output ini berisi nilai parameter input outputClaimIfMatched. Atau null, jika tidak ada kecocokan.
Klaim Keluaran regexCompareResultClaim Boolean Regex cocok dengan jenis klaim output hasil, yang akan diatur sebagai true atau false berdasarkan hasil pencocokan.
Klaim Keluaran Nama klaim benang 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
Klaim Masukan inputKlaim benang Jenis klaim, yang akan dibandingkan.
Parameter Masukan matchTo benang String yang akan dibandingkan dengan inputClaim.
Parameter Masukan perbandingan string benang Nilai yang mungkin: Ordinal atau OrdinalIgnoreCase.
Parameter Masukan stringMatchMsg benang Nilai pertama yang akan ditetapkan jika string sama.
Parameter Masukan stringMatchMsgCode benang Nilai kedua yang akan ditetapkan jika string sama.
Klaim Keluaran outputClaim1 benang Jika string sama, klaim output ini berisi nilai parameter input stringMatchMsg.
Klaim Keluaran outputClaim2 benang Jika string sama, klaim output ini berisi nilai parameter input stringMatchMsgCode.
Klaim Keluaran 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
Klaim Masukan claimToMatch benang Jenis klaim, yang akan dibandingkan.
Parameter Masukan matchTo benang Untai yang akan dibandingkan dengan inputClaim.
Parameter Masukan perbandingan string benang Nilai yang mungkin: Ordinal atau OrdinalIgnoreCase.
Parameter Masukan outputClaimIfMatched benang Nilai yang akan ditetapkan jika string sama.
Klaim Keluaran outputKlaim benang Jika string sama, klaim output ini berisi nilai parameter input outputClaimIfMatched. Atau null, jika string tidak cocok.
Klaim Keluaran 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
Klaim Masukan inputKlaim benang Jenis klaim, yang akan dicari.
Parameter Masukan mengandung benang Nilai untuk dicari.
Parameter Masukan abaikanKasus benang Menentukan apakah perbandingan ini harus mengabaikan kasus string yang sedang dibandingkan.
Klaim Keluaran outputKlaim benang 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
Klaim Masukan inputKlaim benang Jenis klaim, yang berisi string.
Parameter Masukan startIndex int (integer) Posisi karakter awal substring berbasis nol dalam instans ini.
Parameter Masukan panjang int (integer) Jumlah karakter untuk substring.
Klaim Keluaran outputKlaim benang 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
Klaim Masukan inputKlaim benang Jenis klaim, yang berisi string.
Parameter Masukan oldValue benang String yang akan dicari.
Parameter Masukan nilainilai baru benang String untuk menggantikan semua kemunculan oldValue
Klaim Keluaran outputKlaim 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
Klaim Masukan inputKlaim stringKoleksi Kumpulan yang berisi string untuk digabungkan.
Parameter Masukan pembatas benang String yang digunakan sebagai pemisah, seperti , koma.
Klaim Keluaran outputKlaim benang 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:
    • masukanKlaim: [ "Admin", "Author", "Reader" ]
  • Parameter input:
    • pemisah: ","
  • Klaim output:
    • outputKlaim:"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
Klaim Masukan inputKlaim benang Jenis klaim string yang berisi sub string untuk dipisahkan.
Parameter Masukan pembatas benang String yang digunakan sebagai pemisah, seperti , koma.
Klaim Keluaran outputKlaim stringKoleksi 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:
    • masukanKlaim: Admin,Author,Reader
  • Parameter input:
    • pemisah: ","
  • Klaim output:
    • outputKlaim:[ "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.

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