Memecahkan masalah kebijakan kustom dan alur pengguna Azure AD B2C

Sebelum memulai, gunakan pemilih Pilih jenis kebijakan untuk memilih jenis kebijakan yang Anda siapkan. Azure Active Directory B2C menawarkan dua metode untuk menentukan cara pengguna berinteraksi dengan aplikasi Anda: melalui alur pengguna yang telah ditentukan sebelumnya atau melalui kebijakan kustom yang sepenuhnya dapat dikonfigurasi. Langkah yang diperlukan dalam artikel ini berbeda untuk setiap metode.

Aplikasi Anda perlu menangani kesalahan tertentu yang berasal dari layanan Azure B2C. Artikel ini menyoroti beberapa kesalahan umum dan cara menanganinya.

Kesalahan reset kata sandi

Kesalahan ini terjadi saat pengalaman reset kata sandi mandiri tidak diaktifkan di alur pengguna. Dengan demikian, memilih tautan Lupa kata sandi Anda? tidak memicu alur pengguna reset kata sandi. Sebagai gantinya, kode kesalahan AADB2C90118 dikembalikan ke aplikasi Anda.

Ada 2 solusi untuk masalah ini:

Pengguna membatalkan operasi

Layanan Azure AD B2C juga dapat menampilkan kesalahan ke aplikasi Anda saat pengguna membatalkan operasi. Berikut adalah contoh skenario saat pengguna melakukan operasi pembatalan:

  • Kebijakan pengguna menggunakan pengalaman pengaturan ulang kata sandi layanan mandiri (SSPR) yang direkomendasikan dengan akun lokal konsumen. Pengguna memilih tautan Lupa kata sandi Anda? , lalu memilih tombol Batal sebelum pengalaman alur pengguna selesai. Dalam hal ini, layanan Azure AD B2C menampilkan kode kesalahan AADB2C90091 ke aplikasi Anda.
  • Pengguna memilih untuk mengautentikasi dengan penyedia identitas eksternal seperti LinkedIn. Pengguna memilih tombol Batalkan sebelum mengautentikasi ke penyedia identitas itu sendiri. Dalam hal ini, layanan Azure AD B2C menampilkan kode kesalahan AADB2C90273 ke aplikasi Anda. Pelajari lebih lanjut tentang pengembalian layanan Azure Active Directory B2C kode kesalahan.

Untuk mengatasi kesalahan ini, ambil deskripsi kesalahan untuk pengguna dan respons kembali dengan permintaan autentikasi baru menggunakan alur pengguna yang sama.

Jika Anda menggunakan kebijakan kustom Azure Active Directory B2C (Azure AD B2C), Anda mungkin mengalami tantangan dengan bahasa kebijakan format XML atau masalah runtime. Artikel ini menjelaskan beberapa alat dan tips yang dapat membantu Anda menemukan dan mengatasi masalah.

Artikel ini berfokus pada pemecahan masalah konfigurasi kebijakan kustom Azure AD B2C Anda. Ini tidak membahas aplikasi pihak yang mengandalkan atau perpustakaan identitasnya.

Gambaran umum ID korelasi Azure AD B2C

ID korelasi Azure AD B2C adalah nilai pengidentifikasi unik yang dilampirkan ke permintaan otorisasi. Ini melewati semua langkah orkestrasi yang dilalui pengguna. Dengan ID korelasi, Anda dapat:

  • Identifikasi aktivitas masuk di aplikasi Anda dan lacak kinerja kebijakan Anda.
  • Temukan log Azure Application Insights permintaan masuk.
  • Berikan ID korelasi ke REST API Anda dan gunakan untuk mengidentifikasi alur masuk.

ID korelasi diubah setiap kali sesi baru ditetapkan. Saat Anda men-debug kebijakan Anda, pastikan Anda menutup tab browser yang ada atau membuka browser mode privat baru.

Prasyarat

Dapatkan ID korelasi Azure AD B2C

Anda dapat menemukan ID korelasi di halaman pendaftaran atau masuk Azure AD B2C. Di browser Anda, pilih tampilkan sumber. Korelasi muncul sebagai komentar di bagian atas halaman.

Screenshot of Azure AD B2C sign-in page view source.

Salin ID korelasi, lalu lanjutkan alur masuk. Gunakan ID korelasi untuk mengamati perilaku masuk. Untuk informasi selengkapnya, lihat Pemecahan Masalah dengan Application Insights.

Gemakan ID korelasi Azure AD B2C

Anda dapat menyertakan ID korelasi di token Azure AD B2C Anda. Untuk menyertakan ID korelasi:

  1. Buka file ekstensi kebijakan Anda. Contohnya, SocialAndLocalAccounts/TrustFrameworkExtensions.xml.

  2. Cari elemen BuildingBlocks. Jika elemen tersebut tidak ada, tambahkan.

  3. Temukan elemen ClaimsSchema. Jika elemen tersebut tidak ada, tambahkan.

  4. Tambahkan klaim ID korelasi ke elemen ClaimsSchema.

    <!-- 
    <BuildingBlocks>
      <ClaimsSchema> -->
        <ClaimType Id="correlationId">
          <DisplayName>correlation ID</DisplayName>
          <DataType>string</DataType>
        </ClaimType>
      <!-- 
      </ClaimsSchema>
    </BuildingBlocks>-->
    
  5. Buka file pihak yang mengandalkan kebijakan Anda. Misalnya, file SocialAndLocalAccounts/SignUpOrSignIn.xml. Klaim output akan ditambahkan ke token setelah perjalanan pengguna yang sukses dan dikirim ke aplikasi. Ubah elemen profil teknis pada bagian pihak yang berkepentingan untuk menambahkan correlationId sebagai klaim output.

    <RelyingParty>
      <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
      <TechnicalProfile Id="PolicyProfile">
        <DisplayName>PolicyProfile</DisplayName>
        <Protocol Name="OpenIdConnect" />
        <OutputClaims>
          ...
          <OutputClaim ClaimTypeReferenceId="correlationId" DefaultValue="{Context:CorrelationId}" />
        </OutputClaims>
        <SubjectNamingInfo ClaimType="sub" />
      </TechnicalProfile>
    </RelyingParty>
    

Pemecahan Masalah dengan Application Insights

Untuk mendiagnosis masalah dengan kebijakan kustom Anda, gunakan Application Insights. Application Insights melacak aktivitas perjalanan pengguna kebijakan kustom Anda. Ini menyediakan cara untuk mendiagnosis pengecualian dan mengamati pertukaran klaim antara Azure AD B2C dan berbagai penyedia klaim. Penyedia klaim ditentukan oleh profil teknis, seperti penyedia identitas, layanan berbasis API, direktori pengguna Azure AD B2C, dan layanan lainnya.

Kami menyarankan untuk menginstal ekstensi Azure AD B2C untuk Visual Studio Code. Dengan ekstensi Azure AD B2C, log diatur untuk Anda berdasarkan nama kebijakan, ID korelasi (Application Insights menyajikan digit pertama ID korelasi), dan tanda waktu log. Fitur ini membantu Anda menemukan log yang relevan berdasarkan tanda waktu lokal dan melihat perjalanan pengguna seperti yang dijalankan oleh Azure AD B2C.

Catatan

  • Ada penundaan singkat, biasanya kurang dari lima menit, sebelum Anda dapat melihat log baru di Application Insights.
  • Komunitas ini telah mengembangkan ekstensi Visual Studio Code untuk Azure AD B2C untuk membantu pengembang identitas. Ekstensi tidak didukung oleh Microsoft dan tersedia secara ketat apa adanya.

Satu alur masuk dapat mengeluarkan lebih dari satu jejak Azure Application Insights. Dalam cuplikan layar berikut, kebijakan B2C_1A_signup_signin memiliki tiga log. Setiap log mewakili bagian dari alur masuk.

Cuplikan layar berikut ini memperlihatkan ekstensi Azure AD B2C untuk Visual Studio Code dengan penjelajah jejak Azure Application Insights.

Screenshot of Azure AD B2C extension for VS Code with Azure Application Insights trace.

Memfilter log jejak

Dengan fokus pada penjelajah jejak Azure AD B2C, mulai ketik digit pertama ID korelasi, atau waktu yang ingin Anda temukan. Anda melihat kotak filter di kanan atas penjelajah jejak Azure AD B2C memperlihatkan apa yang telah Anda ketik sejauh ini, dan log jejak yang cocok disorot.

Screenshot of Azure AD B2C extension Azure AD B2C trace explorer filter highlighting.

Mengarahkan mouse ke atas kotak filter dan memilih Aktifkan Filter pada Jenis hanya memperlihatkan log jejak yang cocok. Gunakan tombol Hapus 'X' untuk menghapus filter.

Screenshot of Azure AD B2C extension Azure AD B2C trace explorer filter.

Detail log jejak Application Insights

Saat Anda memilih jejak Azure Application Insights, ekstensi akan membuka jendela detail Application Insights dengan informasi berikut:

  • Application Insights - Informasi umum tentang log jejak, termasuk nama kebijakan, ID korelasi, ID jejak Azure Application Insights, dan tanda waktu jejak.
  • Profil teknis - Daftar profil teknis yang muncul di log jejak.
  • Klaim - Daftar alfabet klaim yang muncul di log jejak dan nilainya. Jika klaim muncul beberapa kali di log jejak dengan nilai yang berbeda, tanda => menunjuk nilai terbaru. Anda dapat mengulas klaim ini untuk menentukan apakah nilai klaim yang diharapkan telah ditetapkan dengan benar. Misalnya, jika Anda memiliki prasyarat yang memeriksa nilai klaim, bagian klaim dapat membantu Anda menentukan mengapa alur yang diharapkan berperilaku berbeda.
  • Transformasi klaim - Daftar transformasi klaim yang muncul di log jejak. Setiap transformasi klaim berisi klaim input, parameter input, dan klaim output. Bagian transformasi klaim memberikan wawasan tentang data yang dikirim dan hasil transformasi klaim.
  • Token - Daftar token yang muncul di log jejak. Token tersebut mencakup gabungan OAuth yang mendasarinya, dan token penyedia identitas OpenId Connect. Token penyedia identitas federasi memberikan detail tentang bagaimana penyedia identitas mengembalikan klaim ke Azure AD B2C sehingga Anda dapat memetakan klaim output profil teknis penyedia identitas.
  • Pengecualian - Daftar pengecualian atau kesalahan fatal yang muncul di log jejak.
  • Application Insights JSON - Data mentah pengembalian dari Application Insights.

Cuplikan layar berikut menunjukkan contoh jendela detail log jejak Application Insights.

Screenshot of Azure AD B2C extension Azure AD B2C trace report.

Memecahkan masalah token JWT

Untuk tujuan validasi dan debugging token JWT, Anda dapat mendekode JWT menggunakan situs seperti https://jwt.ms. Buat aplikasi pengujian yang dapat dialihkan ke https://jwt.ms untuk inspeksi token. Jika Anda belum melakukannya, daftarkan aplikasi web, dan aktifkan pemberian implisit token ID.

Screenshot of JWT token preview.

Gunakan Jalankan sekarang dan https://jwt.ms untuk menguji kebijakan Anda secara terpisah dari aplikasi web atau seluler Anda. Situs web ini bertindak seperti aplikasi pihak yang mengandalkan. Ini menampilkan konten token web JSON (JWT) yang dihasilkan kebijakan Azure AD B2C Anda.

Memecahkan masalah protokol SAML

Untuk membantu mengonfigurasi dan men-debug integrasi dengan penyedia layanan Anda, Anda dapat menggunakan ekstensi browser untuk protokol SAML, misalnya, ekstensi SAML DevTools untuk Chrome, SAML-tracer untuk FireFox, atau alat Azure Stack Edge atau IE Developer.

Cuplikan layar berikut menunjukkan bagaimana ekstensi SAML DevTools menyajikan permintaan SAML yang dikirim oleh Azure AD B2C ke penyedia identitas, dan respons SAML.

Screenshot of SAML protocol trace log.

Dengan menggunakan alat ini, Anda dapat memeriksa integrasi antara aplikasi Anda dan Azure AD B2C. Contohnya:

  • Memeriksa apakah permintaan SAML berisi tanda tangan dan menentukan algoritma apa yang digunakan untuk masuk ke permintaan otorisasi.
  • Memeriksa apakah Azure AD B2C mengembalikan pesan kesalahan.
  • Periksa apakah bagian pernyataan dienkripsi.
  • Dapatkan nama klaim yang menunjukkan penyedia identitas.

Anda juga dapat melacak pertukaran pesan antara browser klien Anda dan Azure AD B2C, dengan Fiddler. Ia bisa membantu Anda mendapatkan indikasi di mana perjalanan pengguna Anda gagal dalam langkah-langkah orkestrasi Anda.

Memecahkan masalah validitas kebijakan

Setelah Anda selesai mengembangkan kebijakan, Anda mengunggah kebijakan tersebut ke Azure AD B2C. Mungkin ada beberapa masalah dengan kebijakan Anda, tetapi Anda dapat memvalidasi kebijakan sebelum mengunggahnya.

Kesalahan paling umum dalam menyiapkan kebijakan kustom adalah XML yang diformat secara tidak benar. Editor XML yang bagus sangatlah penting. Ini menampilkan XML secara asli, konten kode warna, prafill istilah umum, menjaga elemen XML diindeks, dan dapat memvalidasi terhadap skema XML.

Kami menyarankan untuk menggunakan Visual Studio Code. Kemudian instal ekstensi XML, seperti Dukungan Bahasa XML oleh Red Hat. Ekstensi XML memungkinkan Anda memvalidasi skema XML sebelum mengunggah file XML Anda, menggunakan definisi skema XSD kebijakan kustom.

Anda bisa menggunakan strategi asosiasi file XML untuk mengikat file XML XSD dengan menambahkan pengaturan berikut ke file settings.json Visual Studio Code Anda. Untuk melakukannya:

  1. Dari Visual Studio Code, pilih Preferensi> File>Pengaturan. Untuk informasi selengkapnya, lihat Pengaturan Pengguna dan Ruang Kerja.

  2. Cari fileAssociations, lalu di bawah Ekstensi, pilih XML.

  3. Pilih Edit di settings.json.

    Screenshot of VS Code XML schema validation.

  4. Di settings.json, tambahkan kode JSON berikut:

    "xml.fileAssociations": [
      {
        "pattern": "**.xml",
        "systemId": "https://raw.githubusercontent.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack/master/TrustFrameworkPolicy_0.3.0.0.xsd"
      }
    ]
    
  5. Simpan perubahan.

Contoh berikut memperlihatkan kesalahan validasi XML. Saat Anda menggerakkan mouse di atas nama elemen, ekstensi mencantumkan elemen yang diharapkan.

Screenshot of VS Code XML schema validation error indicator.

Dalam kasus berikut, elemen DisplayName benar. Tapi, dalam urutan yang salah. Seharusnya DisplayName sebelum elemen Protocol. Untuk memperbaiki masalah ini, gerakkan mouse Anda ke atas elemen DisplayName ke urutan elemen yang benar.

Screenshot of VS Code XML schema validation order error.

Mengunggah kebijakan dan validasi kebijakan

Validasi file kebijakan XML dilakukan secara otomatis saat diunggah. Sebagian besar kesalahan menyebabkan unggahan gagal. Validasi menyertakan file kebijakan yang ingin Anda unggah. Ini juga termasuk rantai file yang dirujuk oleh file unggahan (file kebijakan pihak yang mengandalkan, file ekstensi, dan file dasar).

Tip

Azure AD B2C menjalankan validasi tambahan untuk kebijakan pihak yang mengandalkan. Ketika mengalami masalah dengan kebijakan Anda, bahkan jika Anda hanya mengedit kebijakan perpanjangan, itu adalah praktik yang baik untuk mengunggah kebijakan pihak yang mengandalkan juga.

Bagian ini berisi kesalahan validasi umum dan kemungkinan solusi.

Kesalahan validasi skema ditemukan ...memiliki elemen anak tidak valid '{name}'

Kebijakan Anda berisi elemen XML yang tidak valid, atau elemen XML valid, tetapi tampaknya berada dalam urutan yang salah. Untuk memperbaiki jenis kesalahan ini, lihat bagian Memecahkan masalah validitas kebijakan.

Terdapat urutan kunci duplikat '{number}'

Perjalanan atau sub perjalanan pengguna terdiri dari daftar urutan langkah-langkah orkestrasi yang dijalankan secara berurutan. Setelah Anda mengubah perjalanan, ganti jumlah langkah secara berurutan tanpa melewatkan bilangan bulat dari 1 ke N.

Tip

Anda dapat menggunakan ekstensi Azure AD B2C untuk perintah Visual Studio Code(Shift+Ctrl+r) untuk memberi nomor ulang semua langkah-langkah orkestrasi perjalanan pengguna dan sub perjalanan dalam kebijakan Anda.

... diharapkan memiliki langkah dengan urutan "{number}", tetapi tidak ditemukan...

Periksa kesalahan sebelumnya.

Urutan langkah orkestrasi "{number}" dalam perjalanan pengguna "{name}" ...diikuti oleh langkah pemilihan penyedia klaim dan harus menjadi pertukaran klaim, tetapi itu adalah jenis...

Jenis langkah orkestrasi ClaimsProviderSelection, dan CombinedSignInAndSignUp berisi daftar opsi yang dapat dipilih pengguna. Ini harus mengikuti berdasarkan jenis ClaimsExchange dengan satu atau lebih pertukaran klaim.

Langkah-langkah orkestrasi berikut menyebabkan jenis atau kesalahan ini. Langkah orkestrasi kedua harus jenis ClaimsExchange, bukan ClaimsProviderSelection.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
        <ClaimsProviderSelections>
          <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange"/>
          <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange"/>
        </ClaimsProviderSelections>
        <ClaimsExchanges>
          <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email"/>
        </ClaimsExchanges>
      </OrchestrationStep> 

      <OrchestrationStep Order="2" Type="ClaimsProviderSelection">
        ...
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

...langkah {number} dengan 2 pertukaran klaim. Ini harus didahului dengan pemilihan penyedia klaim untuk menentukan pertukaran klaim mana yang dapat digunakan

Jenis langkah orkestrasi ClaimsExchange harus memiliki satu ClaimsExchange, kecuali langkah sebelumnya adalah jenis ClaimsProviderSelection, atau CombinedSignInAndSignUp. Langkah-langkah orkestrasi berikut menyebabkan jenis atau kesalahan ini. Langkah keenam berisi dua pertukaran klaim.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="5" Type="ClaimsExchange">
        ...
        <ClaimsExchanges>
          <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="6" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-First-API" TechnicalProfileReferenceId="Call-REST-First-API"/>
          <ClaimsExchange Id="Call-REST-Second-API" TechnicalProfileReferenceId="Call-REST-Second-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

Untuk memperbaiki jenis kesalahan ini, gunakan dua langkah orkestrasi. Setiap langkah orkestrasi dengan satu pertukaran klaim.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="5" Type="ClaimsExchange">
        ...
        <ClaimsExchanges>
          <ClaimsExchange Id="SelfAsserted-Social" TechnicalProfileReferenceId="SelfAsserted-Social"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="6" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-First-API" TechnicalProfileReferenceId="Call-REST-First-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-Second-API" TechnicalProfileReferenceId="Call-REST-Second-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

Terdapat urutan kunci duplikat '{name}'

Sebuah perjalanan memiliki beberapa ClaimsExchange dengan Id yang sama. Langkah-langkah berikut menyebabkan jenis kesalahan ini. ID AADUserWrite muncul dua kali dalam perjalanan pengguna.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="8" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="Call-REST-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

Untuk memperbaiki jenis kesalahan ini, ubah pertukaran klaim langkah orkestrasi kedelapan menjadi nama unik, seperti Call-REST-API.

<!-- 
<UserJourneys>
  <UserJourney Id="SignUpOrSignIn">
    <OrchestrationSteps>-->
      ...
      <OrchestrationStep Order="7" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="AADUserWrite" TechnicalProfileReferenceId="AAD-UserWriteUsingAlternativeSecurityId"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      <OrchestrationStep Order="8" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="Call-REST-API" TechnicalProfileReferenceId="Call-REST-API"/>
        </ClaimsExchanges>
      </OrchestrationStep>
      ...
    <!--
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys> -->

...membuat referensi ke ClaimType dengan id "{claim name}" tetapi kebijakan maupun kebijakan dasarnya tidak mengandung elemen tersebut

Jenis kesalahan ini terjadi ketika kebijakan Anda membuat referensi ke klaim yang tidak dideklarasikan dalam skema klaim. Klaim harus didefinisikan dalam setidaknya salah satu file dalam kebijakan.

Misalnya, profil teknis dengan klaim output schoolId. Tetapi klaim output schoolId tidak pernah dideklarasikan dalam kebijakan, atau dalam kebijakan induk.

<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="schoolId" />
  ...
</OutputClaims>

Untuk memperbaiki jenis kesalahan ini, periksa apakah ClaimTypeReferenceId nilai salah eja, atau tidak ada dalam skema. Jika klaim didefinisikan dalam kebijakan ekstensi, tetapi juga digunakan dalam kebijakan dasar. Pastikan klaim didefinisikan dalam kebijakan yang digunakan, atau di kebijakan tingkat atas.

Menambahkan klaim ke skema klaim memecahkan jenis kesalahan ini.

<!--
<BuildingBlocks>
  <ClaimsSchema> -->
    <ClaimType Id="schoolId">
      <DisplayName>School name</DisplayName>
      <DataType>string</DataType>
      <UserHelpText>Enter your school name</UserHelpText>
      <UserInputType>TextBox</UserInputType>
    </ClaimType>
  <!-- 
  </ClaimsSchema>
</BuildingBlocks> -->

...membuat referensi ke ClaimsTransformation dengan ID...

Penyebab kesalahan ini mirip dengan kesalahan klaim. Periksa kesalahan sebelumnya.

Pengguna saat ini dicatat sebagai pengguna dari penyewa 'yourtenant.onmicrosoft.com'...

Anda masuk dengan akun dari penyewa yang berbeda dari kebijakan yang anda coba unggah. Misalnya, masuk Anda dengan admin@contoso.onmicrosoft.com, saat kebijakan TenantId Anda diatur ke fabrikam.onmicrosoft.com.

<TrustFrameworkPolicy ...
  TenantId="fabrikam.onmicrosoft.com"
  PolicyId="B2C_1A_signup_signin"
  PublicPolicyUri="http://fabrikam.onmicrosoft.com/B2C_1A_signup_signin">

  <BasePolicy>
    <TenantId>fabrikam.onmicrosoft.com</TenantId>
    <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
  </BasePolicy>
  ...
</TrustFrameworkPolicy>
  • Periksa apakah nilai TenantId di elemen <TrustFrameworkPolicy\> dan <BasePolicy\> cocok dengan penyewa Azure AD B2C target Anda.

Jenis klaim "{name}" adalah klaim output dari profil teknis pihak yang mengandalkan, tetapi itu bukan klaim output dalam salah satu langkah perjalanan pengguna...

Dalam kebijakan pihak yang mengandalkan, Anda menambahkan klaim output, tetapi klaim output bukan klaim output dalam salah satu langkah perjalanan pengguna. Azure AD B2C tidak dapat membaca nilai klaim dari kantong klaim.

Dalam contoh berikut, klaim schoolId adalah klaim output dari profil teknis pihak yang mengandalkan, tetapi bukan klaim output dalam salah satu langkah perjalanan pengguna SignUpOrSignIn .

<RelyingParty>
  <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
  <TechnicalProfile Id="PolicyProfile">
    <DisplayName>PolicyProfile</DisplayName>
    <Protocol Name="OpenIdConnect" />
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="schoolId" />
      ...
    </OutputClaims>
    <SubjectNamingInfo ClaimType="sub" />
  </TechnicalProfile>
</RelyingParty>

Untuk memperbaiki jenis kesalahan ini, pastikan klaim output muncul setidaknya di kumpulan klaim output profil teknis dari satu langkah orkestrasi. Jika perjalanan pengguna Anda tidak dapat menghasilkan klaim, di profil teknis pihak yang mengandalkan, tetapkan nilai default, seperti string kosong.

<OutputClaim ClaimTypeReferenceId="schoolId" DefaultValue="" />

String input tidak dalam format yang benar

Anda menetapkan jenis nilai yang salah ke klaim dari jenis lain. Misalnya, Anda menentukan klaim bilangan bulat.

<!--
<BuildingBlocks>
  <ClaimsSchema> -->
    <ClaimType Id="age">
      <DisplayName>Age</DisplayName>
      <DataType>int</DataType>
    </ClaimType>
  <!--
  </ClaimsSchema>
</BuildingBlocks> -->

Kemudian Anda mencoba untuk menetapkan nilai string:

<OutputClaim ClaimTypeReferenceId="age" DefaultValue="ABCD" />

Untuk memperbaiki jenis kesalahan ini, pastikan Anda menetapkan nilai yang benar, seperti DefaultValue="0".

"{name}" penyewa sudah memiliki kebijakan dengan id "{name}". Kebijakan lain dengan id yang sama tidak dapat disimpan

Anda mencoba mengunggah kebijakan ke penyewa Anda, tetapi kebijakan dengan nama yang sama sudah diunggah ke penyewa Anda.

Untuk memperbaiki jenis kesalahan ini, saat Anda mengunggah kebijakan, pilih kotak centang Timpa kebijakan kustom jika sudah ada.

Screenshot that demonstrates how to overwrite the custom policy if it already exists.

Langkah berikutnya