Menentukan profil teknis Microsoft Entra dalam kebijakan kustom Azure Active Directory B2C

Catatan

Di Azure Active Directory B2C, kebijakan kustom didesain khusus untuk menangani skenario kompleks. Untuk skenario umum, sebaiknya gunakan alur pengguna bawaan. Jika Anda belum melakukannya, pelajari tentang paket starter kebijakan kustom di Mulai dengan kebijakan kustom di Azure Active Directory B2C.

Azure Active Directory B2C (Azure AD B2C) menyediakan dukungan untuk manajemen pengguna Microsoft Entra. Artikel ini menjelaskan secara spesifik profil teknis untuk berinteraksi dengan penyedia klaim yang mendukung protokol standar ini.

Protokol

Atribut Nama dari elemen Protokol perlu diatur ke Proprietary. Atribut handler harus berisi nama yang sepenuhnya memenuhi syarat dari rakitan handler protokol Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

Mengikuti profil teknis Microsoft Entra paket pemula kebijakan kustom menyertakan profil teknis AAD-Common . Profil teknis Microsoft Entra tidak menentukan protokol karena protokol dikonfigurasi di profil teknis AAD-Common :

  • AAD-UserReadUsingAlternativeSecurityId dan AAD-UserReadUsingAlternativeSecurityId-NoError - Mencari akun sosial di direktori.
  • AAD-UserWriteUsingAlternativeSecurityId - Memuat akun sosial baru.
  • AAD-UserReadUsingEmailAddress - Mencari akun lokal di direktori.
  • AAD-UserWriteUsingLogonEmail - Membuat akun lokal baru.
  • AAD-UserWritePasswordUsingObjectId - Memperbarui kata sandi akun lokal.
  • AAD-UserWriteProfileUsingObjectId - Memperbarui profil pengguna akun lokal atau sosial.
  • AAD-UserReadUsingObjectId - Membaca profil pengguna akun lokal atau sosial.
  • AAD-UserWritePhoneNumberUsingObjectId - Menulis nomor telepon MFA dari akun lokal atau sosial

Contoh berikut menunjukkan profil teknis AAD-Common:

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>

  <!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
  <IncludeInSso>false</IncludeInSso>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

InputClaims

Elemen InputClaims berisi klaim, yang digunakan untuk mencari akun di direktori, atau membuat yang baru. Harus ada tepat satu elemen InputClaim dalam koleksi klaim input untuk semua profil teknis Microsoft Entra. Anda mungkin perlu memetakan nama klaim yang ditentukan dalam kebijakan Anda ke nama yang ditentukan dalam ID Microsoft Entra.

Untuk membaca, memperbarui, atau menghapus akun pengguna yang ada, klaim input adalah kunci yang secara unik mengidentifikasi akun di direktori Microsoft Entra. Mislanya, objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName, atau alternativeSecurityId.

Untuk membuat akun pengguna baru, klaim input adalah kunci yang secara unik mengidentifikasi akun lokal atau federasi. Misalnya, akun lokal: signInNames.emailAddress, atau signInNames.userName. Untuk akun yang difederasi: alternativeSecurityId.

Elemen InputClaimsTransformations mungkin berisi sebuah kumpulan elemen transformasi klaim input yang digunakan untuk memodifikasi klaim input, atau membuat yang baru.

OutputClaims

Elemen OutputClaims berisi daftar klaim yang dikembalikan oleh profil teknis Microsoft Entra. Anda mungkin perlu memetakan nama klaim yang ditentukan dalam kebijakan Anda ke nama yang ditentukan dalam ID Microsoft Entra. Anda juga dapat menyertakan klaim yang tidak dikembalikan oleh ID Microsoft Entra, selama Anda mengatur DefaultValue atribut.

Elemen OutputClaimsTransformations mungkin berisi kumpulan elemen OutputClaimsTransformation yang digunakan untuk memodifikasi klaim output atau menghasilkan yang baru.

Misalnya, profil teknis AAD-UserWriteUsingLogonEmail membuat akun lokal dan menampilkan klaim berikut:

  • objectId, yang merupakan pengidentifikasi akun baru
  • newUser, yang menunjukkan apakah pengguna baru
  • authenticationSource, yang mengatur autentikasi ke localAccountAuthentication
  • userPrincipalName, yang merupakan nama prinsipal pengguna dari akun baru
  • signInNames.emailAddress, yang merupakan nama masuk akun, serupa dengan klaim input email
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="objectId" />
  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>

PersistedClaims

Elemen PersistedClaims berisi semua nilai yang harus dipertahankan oleh ID Microsoft Entra dengan kemungkinan informasi pemetaan antara jenis klaim yang sudah ditentukan di bagian ClaimsSchema dalam kebijakan dan nama atribut Microsoft Entra.

Profil teknis AAD-UserWriteUsingLogonEmail, yang membuat akun lokal baru, mempertahankan klaim berikut:

  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
    <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

    <!-- Optional claims. -->
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>

Nama klaim adalah nama atribut Microsoft Entra kecuali atribut PartnerClaimType ditentukan, yang berisi nama atribut Microsoft Entra.

Persyaratan operasi

  • Harus ada tepat satu elemen InputClaim di kantong klaim untuk semua profil teknis Microsoft Entra.
  • Artikel atribut profil pengguna menjelaskan atribut profil pengguna Azure AD B2C yang didukung yang dapat Anda gunakan dalam klaim input, klaim output, dan klaim yang masih ada.
  • Jika operasi adalah Write atau DeleteClaims, operasi harus muncul di elemen PersistedClaims.
  • Nilai klaim userPrincipalName harus dalam format user@tenant.onmicrosoft.com.
  • Klaim displayName diperlukan dan tidak boleh berupa string kosong.

Operasi profil teknis Microsoft Entra

Baca

Operasi Read membaca data tentang satu akun pengguna. Profil teknis berikut membaca data tentang akun pengguna menggunakan objectId pengguna:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims>

    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />

    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Tulis

Operasi Write membuat atau memperbarui akun pengguna tunggal. Profil teknis berikut membuat akun sosial baru:

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

    <!-- Optional claims -->
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

DeleteClaims

Operasi DeleteClaims menghapus informasi dari daftar klaim yang tersedia. Profil teknis berikut menghapus klaim:

<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaims</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
  </PersistedClaims>
  <OutputClaims />
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

DeleteClaimsPrincipal

Operasi DeleteClaimsPrincipal menghapus akun pengguna tunggal dari direktori. Profil teknis berikut menghapus akun pengguna dari direktori menggunakan nama prinsipal pengguna:

<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Profil teknis berikut menghapus akun pengguna sosial menggunakan alternativeSecurityId:

<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

Metadata

Atribut Wajib Deskripsi
Operasi Ya Operasi yang akan dilakukan. Nilai yang mungkin: Read, Write, DeleteClaims, atau DeleteClaimsPrincipal.
RaiseErrorIfClaimsPrincipalDoesNotExist Tidak Munculkan kesalahan jika objek pengguna tidak ada di direktori. Nilai yang mungkin: true atau false.
RaiseErrorIfClaimsPrincipalAlreadyExists Tidak Munculkan kesalahan jika objek pengguna sudah ada. Nilai yang mungkin: true atau false. Metadata ini hanya berlaku untuk operasi Tulis.
ApplicationObjectId Tidak Pengenal objek aplikasi untuk atribut ekstensi. Nilai: ObjectId dari sebuah aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan atribut kustom.
ClientId Tidak Pengidentifikasi klien untuk mengakses penyewa sebagai pihak ketiga. Untuk mengetahui informasi selengkapnya, lihat Menggunakan atribut kustom dalam kebijakan pengeditan profil kustom
IncludeClaimResolvingInClaimsHandling Tidak Untuk klaim input dan output, menentukan apakah resolusi klaim disertakan dalam profil teknis atau tidak. Nilai yang mungkin: true, atau false (default). Jika Anda ingin menggunakan penyelesai klaim di profil teknis, atur ini ke true.

Elemen antarmuka pengguna

Setelan berikut ini bisa digunakan untuk mengonfigurasi pesan galat yang ditampilkan setelah kegagalan. Metadata harus dikonfigurasi dalam profil teknis yang dibuat sendiri. Pesan kesalahan dapat dilokalisasi.

Atribut Wajib Deskripsi
UserMessageIfClaimsPrincipalAlreadyExists Tidak Jika kesalahan akan dimunculkan (lihat deskripsi atribut RaiseErrorIfClaimsPrincipalAlreadyExists), tentukan pesan untuk ditampilkan kepada pengguna jika objek pengguna sudah ada.
UserMessageIfClaimsPrincipalDoesNotExist Tidak Jika kesalahan dimunculkan (lihat deskripsi atribut RaiseErrorIfClaimsPrincipalDoesNotExist), tentukan pesan untuk ditampilkan kepada pengguna jika objek pengguna tidak ada.

Langkah berikutnya

Lihat artikel berikut ini, misalnya menggunakan profil teknis Microsoft Entra: