Siapkan pendaftaran dan rincian masuk dengan IdP SAML menggunakan Azure Active Directory B2C

Azure Active Directory B2C (Azure AD B2C) mendukung federasi dengan IdP SAML 2.0. Artikel ini menunjukkan kepada Anda cara mengaktifkan rincian masuk dengan akun pengguna IdP SAML, yang memungkinkan pengguna untuk masuk dengan identitas sosial atau perusahaan yang ada, seperti ADFS dan Salesforce.

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.

Fitur ini tersedia hanya untuk kebijakan kustom. Untuk langkah-langkah penyiapan, pilih Kebijakan kustom dalam pemilih sebelumnya.

Gambaran umum skenario

Anda dapat mengonfigurasi Azure AD B2C untuk mengizinkan pengguna masuk ke aplikasi Anda dengan info masuk dari penyedia identitas (IdP) SAML sosial atau perusahaan. Saat Azure AD B2C bergabung dengan IdP SAML, Azure AD B2C bertindak sebagai penyedia layanan yang memulai permintaan SAML ke IdP SAML, dan menunggu respons SAML. Dalam diagram berikut:

  1. Aplikasi ini memulai permintaan otorisasi ke Azure AD B2C. Aplikasi dapat berupa aplikasi OAuth 2.0 atau OpenId Connect, atau penyedia layanan SAML.
  2. Di halaman masuk Azure AD B2C, pengguna memilih untuk masuk dengan akun IdP SAML (misalnya, Contoso). Azure AD B2C memulai permintaan otorisasi SAML dan mengarahkan pengguna ke IdP SAML untuk menyelesaikan rincian masuk.
  3. IdP SAML mengembalikan respons SAML.
  4. Azure Active Directory B2C memvalidasi token SAML, mengekstrak klaim, mengeluarkan tokennya sendiri, dan membawa pengguna kembali ke aplikasi.

Sign in with SAML identity provider flow

Prasyarat

Komponen solusi

Komponen berikut diperlukan untuk skenario ini:

  • IdP SAML dengan kemampuan untuk menerima, mendekode, dan menanggapi permintaan SAML dari Azure AD B2C.
  • Titik akhir metadata SAML yang tersedia untuk IdP Anda secara publik.
  • Penyewa Azure AD B2C.

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.

Buat kunci kebijakan

Untuk membangun kepercayaan antara Azure AD B2C dan IdP SAML, Anda harus memberikan sertifikat X509 yang valid dengan kunci privat. Azure AD B2C menandatangani permintaan SAML, menggunakan kunci pribadi sertifikat. IdP memvalidasi permintaan menggunakan kunci publik sertifikat. Kunci publik dapat diakses melalui metadata profil teknis. Atau, Anda dapat mengunggah file .cer secara manual ke IdP SAML Anda.

Sertifikat yang ditandatangani sendiri dapat diterima untuk sebagian besar skenario. Untuk lingkungan produksi, sebaiknya menggunakan sertifikat X509 yang dikeluarkan oleh otoritas sertifikat. Selain itu, seperti yang dijelaskan nantinya dalam dokumen ini, untuk lingkungan non-produksi, Anda dapat menonaktifkan penandatanganan SAML di kedua sisinya.

Mendapatkan sertifikat

Jika Anda belum memiliki sertifikat, Anda dapat menggunakan sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri adalah sertifikat keamanan yang tidak ditandatangani oleh otoritas sertifikat (CA) dan tidak memberikan jaminan keamanan atas sertifikat yang ditandatangani oleh CA.

Di Windows, gunakan cmdlet New-SelfSignedCertificate di PowerShell untuk membuat sertifikat digital.

  1. Jalankan perintah PowerShell berikut ini untuk membuat sertifikat digital yang ditandatangani sendiri. Ubah argumen -Subject yang sesuai untuk aplikasi Anda dan nama penyewa Azure Active Directory B2C seperti contosowebapp.contoso.onmicrosoft.com. Anda juga dapat mengatur -NotAftertanggal untuk menetapkan waktu kedaluwarsa yang berbeda untuk sertifikat.

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. Di komputer Windows, cari dan pilih Kelola sertifikat pengguna

  3. Di bawah Sertifikat - Pengguna Saat Ini, pilih Sertifikat>Pribadi>yourappname.yourtenant.onmicrosoft.com.

  4. Pilih sertifikat, lalu pilihTindakan>Semua Tugas>Ekspor.

  5. Pilih Berikutnya>Ya, ekspor kunci privat>Berikutnya.

  6. Terima default untuk Format File Ekspor, lalu pilih Berikutnya.

  7. Aktifkan opsi Kata Sandi, masukkan sandi untuk sertifikat, lalu pilih Berikutnya.

  8. Untuk menentukan lokasi penyimpanan sertifikat, pilih Jelajahi dan navigasikan ke direktori pilihan Anda.

  9. Pada jendela Simpan Sebagai, masukkan Nama file, lalu pilih Simpan.

  10. Pilih Berikutnya>Selesai.

Agar Azure Active Directory B2C menerima kata sandi file .pfx, kata sandi harus dienkripsi dengan opsi TripleDES-SHA1 di utilitas Ekspor Simpan Sertifikat Windows, bukan di AES256-SHA256.

Unggah sertifikat

Anda harus menyimpan sertifikat di penyewa Azure AD B2C Anda.

  1. Masuk ke portal Azure.
  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. Pada halaman Gambaran Umum, pilih Kerangka Kerja Pengalaman Identitas.
  5. Pilih Tombol Kebijakan, lalu pilih Tambahkan.
  6. Untuk Opsi, pilih Upload.
  7. Masukkan Nama untuk kunci kebijakan. Contohnya, SAMLSigningCert. Awalan B2C_1A_ ditambahkan secara otomatis ke nama kunci Anda.
  8. Telusuri dan pilih file .pfx sertifikat Anda dengan kunci privat.
  9. Klik Buat.

Mengonfigurasi profil teknis SAML

Tentukan IdP SAML dengan menambahkannya ke elemen ClaimsProviders di file ekstensi kebijakan Anda. Penyedia klaim berisi profil teknis SAML yang menentukan titik akhir dan protokol yang diperlukan untuk berkomunikasi dengan IdP SAML. Untuk menambahkan penyedia klaim dengan profil teknis SAML:

  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>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-SAML2">
          <DisplayName>Contoso</DisplayName>
          <Description>Login with your SAML identity provider account</Description>
          <Protocol Name="SAML2"/>
          <Metadata>
            <Item Key="PartnerEntity">https://your-AD-FS-domain/federationmetadata/2007-06/federationmetadata.xml</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_SAMLSigningCert"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="assertionSubjectName" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="first_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="last_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="http://schemas.microsoft.com/identity/claims/displayname" />
            <OutputClaim ClaimTypeReferenceId="email"  />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="contoso.com" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    

Perbarui elemen XML berikut ini dengan nilai yang relevan:

Elemen XML Nilai
ClaimsProvider\Domain Nama domain yang digunakan untuk rincian masuk langsung. Masukkan nama domain yang ingin Anda gunakan di rincian masuk langsung. Misalnya, Contoso.com.
TechnicalProfile\DisplayName Nilai ini akan ditampilkan pada tombol rincian masuk di layar rincian masuk Anda. Misalnya, Contoso.
Metadata\PartnerEntity URL metadata IdP SAML. Atau Anda dapat menyalin metadata IdP dan menambahkannya di dalam elemen CDATA <![CDATA[Your IDP metadata]]>.

Memetakan klaim

Elemen OutputClaims berisi daftar klaim yang dikembalikan oleh IdP SAML. Petakan nama klaim yang ditentukan dalam kebijakan Anda ke nama pernyataan yang ditentukan dalam IdP. Periksa IdP Anda untuk daftar klaim (pernyataan). Untuk informasi selengkapnya, lihat claims-mapping.

Dalam contoh di atas, Contoso-SAML2 menyertakan klaim yang dikembalikan oleh IdP SAML:

  • Klaim assertionSubjectName dipetakan ke klaim issuerUserId .
  • Klaim first_name dipetakan ke klaim givenName.
  • Klaim last_name dipetakan ke klaim surname.
  • Klaim http://schemas.microsoft.com/identity/claims/displayname dipetakan ke klaim displayName .
  • Klaim email tanpa pemetaan nama.

Profil teknis juga menampilkan klaim yang tidak ditampilkan oleh IdP:

  • Klaim identityProvider yang berisi nama IdP.
  • Klaim authenticationSource dengan nilai default socialIdpAuthentication.

Menambahkan profil teknis sesi SAML

Jika Anda belum memiliki profil teknis sesi SAML SM-Saml-idp, tambahkan profil ke kebijakan ekstensi Anda. Cari bagian <ClaimsProviders> dan tambahkan cuplikan XML berikut. Jika kebijakan Anda sudah berisi profil teknis SM-Saml-idp, lompat ke langkah berikutnya. Untuk informasi selengkapnya, lihat manajemen akses menyeluruh.

<ClaimsProvider>
  <DisplayName>Session Management</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="SM-Saml-idp">
      <DisplayName>Session Management Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="IncludeSessionIndex">false</Item>
        <Item Key="RegisterServiceProviders">false</Item>
      </Metadata>
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>

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-SAML2" />
  </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.

Mengonfigurasi IdP SAML Anda

Setelah kebijakan Anda dikonfigurasi, Anda perlu mengonfigurasi IdP SAML Anda dengan metadata SAML Azure AD B2C. Metadata SAML adalah informasi yang digunakan dalam protokol SAML untuk mengekspos konfigurasi kebijakan Anda, penyedia layanan. Ini menentukan lokasi layanan, seperti rincian masuk dan keluar, sertifikat, metode masuk, dan banyak lagi.

Setiap IdP SAML memiliki langkah yang berbeda untuk menetapkan penyedia layanan. Beberapa IdP SAML meminta metadata Azure AD B2C, sedangkan yang lain mengharuskan Anda untuk membuka file metadata secara manual dan memberikan informasi. Lihat dokumentasi IdP Anda untuk mendapatkan panduan.

Contoh berikut ini memperlihatkan alamat URL ke metadata SAML dari profil teknis Azure AD B2C:

https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Saat menggunakan domain kustom, gunakan format berikut:

https://your-domain-name/<your-tenant-name>.onmicrosoft.com/<your-policy>/samlp/metadata?idptp=<your-technical-profile>

Ganti nilai berikut:

  • your-tenant-name dengan nama penyewa Anda, seperti your-tenant.onmicrosoft.com.
  • your-domain-name dengan nama domain kustom Anda, seperti login.contoso.com.
  • your-policy dengan nama kebijakan Anda. Misalnya, B2C_1A_signup_signin_adfs.
  • your-technical-profile dengan nama profil teknis IdP SAML Anda. Misalnya, Contoso-SAML2.

Buka browser dan navigasikan ke URL. Pastikan Anda mengetikkan URL yang benar dan Anda memiliki akses ke file metadata XML.

Menguji kebijakan kustom Anda

  1. Masuk ke portal Azure.
  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. Di portal Microsoft Azure, cari dan pilih AAD B2C.
  4. Di bawah Kebijakan, pilih IEF
  5. Pilih kebijakan pihak yang mengandalkan Anda, misalnya B2C_1A_signup_signin.
  6. Untuk Aplikasi, pilih aplikasi web yang Anda daftarkan sebelumnya. URL Balasan harus menunjukkan https://jwt.ms.
  7. Pilih tombol Jalankan sekarang.
  8. Dari halaman pendaftaran atau masuk, pilih Contoso untuk masuk dengan akun Contoso.

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

Langkah berikutnya