Menyiapkan pendaftaran dan rincian masuk dengan OpenID Connect menggunakan Azure Active Directory 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.

OpenID Connect adalah protokol autentikasi yang dibangun dengan OAuth 2.0 yang dapat digunakan untuk rincian masuk pengguna yang aman. Sebagian besar IdP yang menggunakan protokol ini didukung di Azure AD B2C.

Artikel ini menjelaskan cara menambahkan IdP OpenID Connect kustom ke alur pengguna Anda.

Penting

Titik akhir Anda harus mematuhi persyaratan keamanan Azure AD B2C. Versi dan cipher TLS yang lebih lama tidak digunakan lagi. Untuk informasi lebih lanjut, lihat Persyaratan Azure AD B2C TLS dan cipher suite.

Prasyarat

Menambahkan IdP

  1. Masuk ke portal Microsoft Azure sebagai administrator global penyewa Azure AD B2C Anda.
  2. Jika Anda memiliki akses ke beberapa penyewa, pilih ikon Pengaturan di menu atas untuk beralih ke penyewa Azure AD B2C Anda dari menu Direktori + langganan.
  3. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.
  4. Pilih Penyedia identitas, lalu pilih Penyedia OpenID Connect baru.
  5. Masukkan nama . Misalnya, masukkan Contoso.

Tentukan IdP OpenId Connect dengan menambahkannya ke elemen ClaimsProviders pada file ekstensi kebijakan Anda.

  1. Buka TrustFrameworkExtensions.xml.

  2. Temukan elemen ClaimsProviders. Jika tidak ada, tambahkan di bawah elemen akar.

  3. Tambahkan ClaimsProvider baru sebagai berikut:

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Login with Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://your-identity-provider.com/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <!-- <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
          </CryptographicKeys> -->
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="email" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
            <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid"/>
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Mengonfigurasi IdP

Setiap IdP OpenID Connect menjelaskan dokumen metadata yang berisi sebagian besar informasi yang diperlukan untuk rincian masuk. Dokumen metadata tersebut meliputi informasi seperti URL yang akan digunakan dan lokasi kunci penandatanganan publik layanan. Dokumen metadata OpenID Connect selalu terletak di titik akhir yang berakhiran .well-known/openid-configuration. Untuk IdP OpenID Connect yang ingin Anda tambahkan, masukkan URL metadatanya.

Pada url Metadata, masukkan URL dokumen metadata OpenID Connect.

Pada metadata profil teknis <Item Key="METADATA">, masukkan URL dokumen metadata OpenID Connect.

ID klien dan rahasia

Untuk mengizinkan pengguna masuk, IdP mengharuskan pengembang untuk mendaftarkan aplikasi dalam layanan mereka. Aplikasi ini memiliki ID yang disebut sebagai ID klien dan rahasia klien.

Rahasia klien bersifat opsional. Namun, Anda harus memberikan rahasia klien jika Jenis respons adalah code, yang menggunakan rahasia untuk menukarkan kode dengan token.

Untuk menambahkan ID klien dan rahasia klien, salin nilai-nilai berikut dari IdP dan masukkan ke dalam bidang yang sesuai.

Pada metadata profil teknis <Item Key="client_id">, masukkan ID klien.

Buat kunci kebijakan

Jika rahasia klien diperlukan, simpan rahasia klien yang sebelumnya Anda rekam di penyewa Azure AD B2C Anda.

  1. Masuk ke portal Azure.

  2. Pastikan Anda menggunakan direktori yang berisi penyewa AAD B2C Anda. Pilih filter Direktori + langganan di toolbar portal.

  3. Pada Setelan portal | Direktori + langganan, temukan direktori Azure AD B2C Anda di daftar Nama direktori, lalu pilih Beralih.

  4. Pilih Semua layanan di pojok kiri atas portal Microsoft Azure, lalu cari dan pilih AAD B2C.

  5. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.

  6. Pilih Tombol Kebijakan, lalu pilih Tambahkan.

  7. Untuk Opsi, pilih Manual.

  8. Masukkan Nama untuk kunci kebijakan. Contohnya, ContosoSecret. Awalan B2C_1A_ ditambahkan secara otomatis ke nama kunci Anda.

  9. Di Rahasia, masukkan rahasia klien Anda yang sebelumnya Anda rekam.

  10. Untuk Penggunaan kunci, pilih Signature.

  11. Klik Buat.

  12. Pada elemen XML CryptographicKeys, tambahkan elemen berikut:

    <CryptographicKeys>
      <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoSecret"/>
    </CryptographicKeys>
    

Scope

Cakupan menentukan informasi dan izin yang ingin Anda kumpulkan dari IdP Anda, misalnya openid profile. Untuk menerima token ID dari penyedia identitas, cakupan openid harus ditentukan.

Tanpa token ID, pengguna tidak dapat masuk ke Azure AD B2C menggunakan IdP kustom. Cakupan lain dapat ditambahkan dengan dipisahkan oleh spasi. Lihat dokumentasi IdP kustom untuk melihat cakupan lain apa yang mungkin tersedia.

Pada Cakupan, masukkan cakupan dari IdP. Contohnya, openid profile.

Pada metadata profil teknis <Item Key="scope">, masukkan cakupan dari IdP. Contohnya, openid profile.

Jenis respons

Jenis respons menjelaskan jenis informasi apa yang dikirim kembali dalam panggilan awal ke authorization_endpoint penyedia identitas kustom. Jenis respons berikut ini dapat digunakan:

  • code: Sesuai dengan alur kode otorisasi, kode akan dikembalikan ke Azure AD B2C. Azure AD B2C melanjutkan untuk memanggil token_endpoint untuk menukar kode dengan token.
  • id_token: Token ID dikembalikan ke Azure AD B2C dari IdP kustom.

Pada Jenis respons, pilih code, atau id_token, menurut pengaturan IdP Anda.

Pada metadata profil teknis <Item Key="response_types">, pilih code, atau id_token, berdasarkan pengaturan IdP Anda.

Mode respons

Mode respons menentukan metode yang harus digunakan untuk mengirim data kembali dari IdP kustom ke Azure AD B2C. Mode respons berikut ini dapat digunakan:

  • form_post: Mode respons ini direkomendasikan untuk keamanan terbaik. Respons ditransmisikan melalui metode POST HTTP, dengan kode atau token yang dikodekan dalam isi menggunakan format application/x-www-form-urlencoded.
  • query: Kode atau token dikembalikan sebagai parameter kueri.

Pada Mode respons, pilih form_post, atau query, menurut pengaturan IdP Anda.

Pada metadata profil teknis <Item Key="response_mode">, pilih form_post, atau query, berdasarkan pengaturan IdP Anda.

Petunjuk domain

Petunjuk domain dapat digunakan untuk melompat langsung ke halaman masuk IdP yang ditentukan, alih-alih meminta pengguna membuat pilihan di antara daftar IdP yang tersedia.

Untuk memperbolehkan perilaku semacam ini, masukkan nilai untuk petunjuk domain. Untuk beralih ke IdP kustom, tambahkan parameter domain_hint=<domain hint value> ke akhir permintaan Anda saat memanggil Azure AD B2C untuk masuk.

Pada Petunjuk domain, masukkan nama domain yang digunakan dalam petunjuk domain.

Pada elemen XML profil teknis <Domain>contoso.com</Domain>, masukkan nama domain yang digunakan dalam petunjuk domain. Contohnya, contoso.com.

Pemetaan klaim

Setelah IdP kustom mengirim token ID kembali ke Azure AD B2C, Azure AD B2C harus dapat memetakan klaim dari token yang diterima ke klaim yang diakui dan digunakan Azure AD B2C. Untuk setiap pemetaan berikut, lihat dokumentasi IdP kustom untuk memahami klaim yang dikembalikan dalam token IdP:

  • ID Pengguna: Masukkan klaim yang memberikan pengidentifikasi unik untuk pengguna yang masuk.
  • Nama Tampilan: Masukkan klaim yang memberikan nama tampilan atau nama lengkap untuk pengguna.
  • Nama Depan: Masukkan klaim yang memberikan nama depan pengguna.
  • Nama Belakang: Masukkan klaim yang memberikan nama belakang pengguna.
  • Alamat Email: Masukkan klaim yang memberikan alamat email pengguna.

Elemen OutputClaims berisi daftar klaim yang dikembalikan oleh IdP Anda. Petakan nama klaim yang ditentukan dalam kebijakan Anda ke nama yang ditentukan dalam IdP. Pada elemen <OutputClaims>, konfigurasikan atribut PartnerClaimType dengan nama klaim terkait seperti yang ditentukan oleh IdP Anda.

ClaimTypeReferenceId PartnerClaimType
issuerUserId Masukkan klaim yang memberikan pengidentifikasi unik untuk pengguna yang masuk.
displayName Masukkan klaim yang memberikan nama tampilan atau nama lengkap untuk pengguna.
givenName Masukkan klaim yang memberikan nama depan pengguna.
surName Masukkan klaim yang memberikan nama belakang pengguna.
email Masukkan klaim yang memberikan alamat email pengguna.
identityProvider Masukkan klaim yang menyediakan nama penerbit token. Contohnya, iss. Jika IdP tidak mencakup klaim pengeluar sertifikat dalam token, atur atribut DefaultValue dengan pengidentifikasi unik IdP Anda. Contohnya, DefaultValue="contoso.com".

Menambahkan IdP ke alur pengguna

  1. Di penyewa AAD B2C Anda, pilih Alur pengguna.
  2. Pilih alur pengguna yang ingin Anda tambahkan IdP.
  3. Di bawah Penyedia identitas sosial, pilih IdP yang Anda tambahkan. Misalnya, Contoso.
  4. Pilih Simpan.

Menguji alur pengguna Anda

  1. Untuk menguji kebijakan Anda, pilih Jalankan alur pengguna.
  2. Untuk Aplikasi, pilih aplikasi web bernama testapp1 yang Anda daftarkan sebelumnya. URL Balasan harus menunjukkan https://jwt.ms.
  3. Klik tombol Jalankan alur pengguna.
  4. Dari halaman rincian masuk atau pendaftaran, pilih IdP yang ingin Anda masuki. Misalnya, Contoso.

Jika proses masuk berhasil, browser Anda dialihkan ke https://jwt.ms, yang menampilkan konten token yang dikembalikan oleh Azure AD B2C.

Menambahkan perjalanan pengguna

Pada tahap ini, penyedia identitas telah disiapkan, tetapi belum tersedia di halaman masuk mana pun. Jika Anda tidak memiliki perjalanan pengguna kustom Anda sendiri, buat duplikat perjalanan pengguna template yang sudah ada, jika tidak lanjutkan ke langkah berikutnya.

  1. Buka file TrustFrameworkBase.xml dari paket pemula.
  2. Temukan dan salin seluruh konten elemen UserJourney yang menyertakan Id="SignUpOrSignIn".
  3. Buka TrustFrameworkExtensions.xml dan temukan elemen UserJourneys. Jika elemen tersebut tidak ada, tambahkan.
  4. Tempelkan seluruh konten elemen UserJourney yang Anda salin sebagai anak dari elemen UserJourneys.
  5. Ganti nama Id perjalanan pengguna. Contohnya, Id="CustomSignUpSignIn".

Tambahkan penyedia identitas ke perjalanan pengguna

Sekarang setelah Anda memiliki perjalanan pengguna, tambahkan penyedia identitas baru ke perjalanan pengguna. Anda terlebih dahulu menambahkan tombol masuk, lalu tautkan tombol tersebut ke tindakan. Tindakan ini adalah profil teknis yang Anda buat sebelumnya.

  1. Dalam perjalanan pengguna, temukan elemen langkah orkestrasi yang mencakup Type="CombinedSignInAndSignUp" atau Type="ClaimsProviderSelection". Ini biasanya langkah orkestrasi pertama. Elemen ClaimsProviderSelections berisi daftar penyedia identitas yang dapat digunakan pengguna untuk masuk. Urutan elemen mengontrol urutan tombol masuk yang disajikan kepada pengguna. Tambahkan elemen XML ClaimsProviderSelection. Tetapkan nilai TargetClaimsExchangeId ke nama yang bersahabat.

  2. Pada langkah orkestrasi berikutnya, tambahkan elemen ClaimsExchange. Set Id ke nilai pertukaran klaim target Id. Perbarui nilai TechnicalProfileReferenceId ke Id profil teknis yang Anda buat sebelumnya.

XML berikut menunjukkan dua langkah orkestrasi pertama dari perjalanan pengguna dengan penyedia identitas:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

Mengonfigurasi kebijakan pihak yang diandalkan

Kebijakan pihak yang diandalkan, misalnya SignUpSignIn.xml, menentukan perjalanan yang akan dijalankan Azure AD B2C. Temukan elemen DefaultUserJourney dalam pihak yang diandalkan. Perbarui ReferenceId agar sesuai dengan ID perjalanan, tempat Anda menambahkan IdP.

Dalam contoh berikut, untuk perjalanan CustomSignUpSignIn, ReferenceId diatur ke CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Mengunggah kebijakan kustom

  1. Masuk ke portal Azure.
  2. Pilih ikon Direktori + Langganan di toolbar portal, lalu pilih direktori yang berisi penyewa Azure AD B2C Anda.
  3. Di portal Microsoft Azure, cari dan pilih AAD B2C.
  4. Di bagian Kebijakan, pilih IEF.
  5. Pilih Unggah Kebijakan Kustom, lalu unggah dua file kebijakan yang Anda ubah, dalam urutan berikut: kebijakan ekstensi, misalnya TrustFrameworkExtensions.xml, lalu kebijakan pihak yang diandalkan, seperti SignUpSignIn.xml.
  1. Pilih kebijakan pihak yang mengandalkan Anda, misalnya B2C_1A_signup_signin.
  2. Untuk Aplikasi, pilih aplikasi web yang Anda daftarkan sebelumnya. URL Balasan harus menunjukkan https://jwt.ms.
  3. Pilih tombol Jalankan sekarang.
  4. Dari halaman pendaftaran atau masuk, pilih Contoso untuk masuk dengan akun Google.

Jika proses masuk berhasil, browser Anda dialihkan ke https://jwt.ms, yang menampilkan konten token yang dikembalikan oleh Azure AD B2C.

Masalah Umum

  • Azure AD B2C tidak mendukung JWE (JSON Web Encryption) untuk bertukar token terenkripsi dengan penyedia identitas OpenID connect.

Langkah berikutnya

Temukan informasi selengkapnya dengan melihat panduan referensi profil teknis OpenId Connect.