Menyiapkan alur kredensial klien OAuth 2.0 di 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.

Alur pemberian info masuk klien OAuth 2.0 mengizinkan aplikasi (klien rahasia) untuk menggunakan info masuknya sendiri, bukan meniru pengguna, untuk mengautentikasi saat memanggil sumber daya web, seperti REST API. Jenis pemberian ini umumnya digunakan untuk interaksi server-ke-server yang harus dijalankan di latar belakang, tanpa interaksi langsung dengan pengguna. Jenis aplikasi ini sering disebut sebagai daemon atau akun layanan.

Dalam alur kredensial klien, izin diberikan langsung ke aplikasi itu sendiri oleh administrator. Ketika aplikasi menyajikan token ke sumber daya, sumber daya memberlakukan aplikasi itu sendiri memiliki otorisasi untuk melakukan tindakan karena tidak ada pengguna yang terlibat dalam autentikasi. Artikel ini membahas langkah yang diperlukan untuk mengotorisasi aplikasi untuk memanggil API, dan cara mendapatkan token yang diperlukan untuk memanggil API tersebut.

Fitur ini berada dalam pratinjau publik.

Ringkasan pendaftaran aplikasi

Untuk mengaktifkan aplikasi Anda untuk masuk dengan kredensial klien, lalu panggil API web, Anda mendaftarkan dua aplikasi di direktori Azure AD B2C.

  • Pendaftaran aplikasi memungkinkan aplikasi Anda untuk masuk menggunakan Azure AD B2C. Proses pendaftaran aplikasi menghasilkan ID aplikasi, juga disebut ID klien, yang menjadi ID aplikasi Anda. Anda juga membuat rahasia klien, yang digunakan aplikasi Anda untuk memperoleh token dengan aman.

  • Pendaftaran API web memungkinkan aplikasi Anda memproses API web dengan aman. Pendaftaran mencakup cakupanAPI web. Cakupan menyediakan cara untuk mengelola izin ke sumber daya yang dilindungi seperti API web Anda. Lalu, Anda memberikan izin aplikasi web ke cakupan API web. Ketika token akses diminta, aplikasi menentukan izin yang diinginkan dalam parameter cakupan .default permintaan. Azure AD B2C mengembalikan cakupan API web yang diberikan ke aplikasi Anda.

Arsitektur dan pendaftaran aplikasi diilustrasikan dalam diagram berikut:

Diagram of a web app with web A P I call registrations and tokens.

Langkah 1: Daftarkan aplikasi API web

Dalam langkah ini, Anda mendaftarkan API web (Aplikasi 2) dengan cakupannya. Kemudian, Anda memberikan izin aplikasi Anda (Aplikasi 1) ke cakupan tersebut. Jika Anda sudah memiliki pendaftaran aplikasi seperti itu, lewati langkah ini, lalu pindah ke langkah berikutnya, Langkah 1.1 Tentukan peran API web (cakupan).

Untuk membuat pendaftaran aplikasi API web (ID Aplikasi: 2), ikuti langkah-langkah berikut:

  1. Masuk ke portal Azure.

  2. Pastikan Anda menggunakan direktori yang berisi penyewa AAD B2C Anda. Pilih ikon Direktori + langganan di bilah alat portal.

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

  4. Di portal Microsoft Azure, cari dan pilih AAD B2C.

  5. Pilih Pendaftaran aplikasi, lalu pilih Pendaftaran baru.

  6. Untuk Nama, masukkan nama untuk aplikasi (misalnya, my-api1). Biarkan nilai default untuk URI Pengalihan dan Jenis akun yang didukung.

  7. Pilih Daftarkan.

  8. Setelah pendaftaran aplikasi selesai, pilih Ringkasan.

  9. Catat nilai ID Aplikasi (klien) untuk digunakan nanti, saat Anda mengonfigurasi aplikasi web.

    Screenshot that demonstrates how to get a web A P I application I D.

Langkah 1.1 Menentukan peran API web (cakupan)

Dalam langkah ini, Anda mengonfigurasi URI ID Aplikasi API web, lalu menentukan peran Aplikasi. Peran aplikasi, digunakan oleh cakupan OAuth 2.0 dan ditentukan pada pendaftaran aplikasi yang mewakili API Anda. Aplikasi Anda menggunakan URI ID Aplikasi dengan cakupan .default. Untuk menentukan peran aplikasi, ikuti langkah-langkah berikut:

  1. Pilih API web yang Anda buat, misalnya my-api1.

  2. Di bagian Kelola, pilih Ekspos API.

  3. Di samping URI ID Aplikasi, pilih tautan Set. Ganti nilai default (GUID) dengan nama yang unik (misalnya, api ), kemudian pilih Simpan.

  4. Menyalin URI ID Aplikasi. Cuplikan layar berikut menunjukkan cara menyalin URI ID Aplikasi.

    Screenshot shows how to copy the application I D.

  5. Di bawah Kelola, pilih Manifes untuk membuka aplikasi editor manifes. Di editor, temukan pengaturan appRoles, dan tentukan peran aplikasi yang menargetkan applications. Setiap definisi peran aplikasi harus memiliki pengidentifikasi unik global (GUID) untuk nilai id miliknya. Buat GUID baru dengan menjalankan perintahnew-guid di Microsoft PowerShell, atau generator GUID online. Properti value dari setiap definisi peran aplikasi muncul dalam cakupan, scp klaim. Properti value tidak boleh berisi spasi. Contoh berikut menunjukkan dua peran aplikasi, baca dan tulis:

    "appRoles": [
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Read",
      "id": "d6a15e20-f83c-4264-8e61-5082688e14c8",
      "isEnabled": true,
      "description": "Readers have the ability to read tasks.",
      "value": "app.read"
    },
    {
      "allowedMemberTypes": ["Application"],
      "displayName": "Write",
      "id": "204dc4ab-51e1-439f-8c7f-31a1ebf3c7b9",
      "isEnabled": true,
      "description": "Writers have the ability to create tasks.",
      "value": "app.write"
    }],
    
  6. Di bagian atas halaman, pilih Simpan untuk menyimpan perubahan manifes.

Langkah 2: Mendaftarkan aplikasi

Guna memungkinkan aplikasi Anda untuk masuk dengan Azure AD B2C menggunakan alur info masuk klien, Anda dapat menggunakan aplikasi yang sudah ada atau mendaftarkan yang baru (Aplikasi 1).

Jika Anda menggunakan aplikasi yang sudah ada, pastikan accessTokenAcceptedVersion aplikasi diatur ke 2:

  1. Di portal Microsoft Azure, cari dan pilih AAD B2C.
  2. Pilih Pendaftaran aplikasi, lalu pilih aplikasi yang sudah ada dari daftar.
  3. Di menu sebelah kiri, di bagian Kelola, pilih Manifes untuk membuka manifes editor.
  4. Temukan elemen accessTokenAcceptedVersion dan atur nilainya ke 2.
  5. Di bagian atas halaman, pilih Simpan untuk menyimpan perubahan.

Untuk membuat pendaftaran aplikasi API web baru, ikuti langkah-langkah berikut:

  1. Di portal Azure, cari dan pilih Azure AD B2C

  2. Pilih Pendaftaran aplikasi, lalu pilih Pendaftaran baru.

  3. Masukkan Nama untuk aplikasi. Misalnya, ClientCredentials_app.

  4. Biarkan nilai lain apa adanya, lalu pilih Daftarkan.

  5. Rekam ID Aplikasi (klien) untuk digunakan di langkah selanjutnya.

    Screenshot shows how to get the application I D.

Langkah 2.1 Buat rahasia klien

Buat rahasia klien untuk aplikasi terdaftar. Aplikasi Anda menggunakan rahasia klien untuk membuktikan identitasnya saat meminta token.

  1. Di bagian Kelola, pilih Sertifikat & rahasia.

  2. Pilih Rahasia klien baru.

  3. Di kotak Deskripsi, masukkan deskripsi rahasia klien (misalnya, clientsecret1).

  4. Di bawahKedaluwarsa, pilih durasi yang membuat rahasia tersebut valid, lalu pilih Tambahkan.

  5. Catat Nilai rahasia. Anda menggunakan nilai ini untuk konfigurasi di langkah selanjutnya.

    Screenshot shows how to copy the application secret.

Langkah 2.2 Memberikan izin aplikasi untuk API web

Untuk memberi izin kepada aplikasi Anda (Aplikasi 1), ikuti langkah-langkah berikut:

  1. Pilih Pendaftaran aplikasi, lalu pilih aplikasi yang Anda buat (Aplikasi 1).

  2. Di bagian Kelola, pilih Izin API.

  3. Di Izin yang dikonfigurasi, pilih Tambahkan izin.

  4. Pilih tab API Saya.

  5. Pilih API (Aplikasi 2) yang aplikasi webnya harus diberi akses. Contohnya, masukkan my-api1.

  6. Pilih Izin aplikasi.

  7. Di bawah Izin, luaskan aplikasi, lalu pilih cakupan yang Anda tentukan sebelumnya (misalnya, app.read dan app.write).

    Screenshot shows how to grant the application A P I permissions.

  8. Pilih Tambahkan izin.

  9. Pilih Beri persetujuan admin untuk <nama penyewa Anda>.

  10. Pilih Ya.

  11. Pilih Refresh, lalu pastikan bahwa Diberikan untuk ... muncul di bawah Status untuk kedua cakupan.

Langkah 3: Mendapatkan token akses

Tidak ada tindakan khusus untuk mengaktifkan info masuk klien untuk alur pengguna atau kebijakan kustom. Alur pengguna Azure AD B2C dan kebijakan kustom mendukung alur info masuk klien. Jika Anda belum melakukannya, buat alur pengguna atau kebijakan kustom. Kemudian, gunakan aplikasi pengembangan API favorit Anda untuk menghasilkan permintaan otorisasi. Buat panggilan seperti contoh ini dengan informasi berikut sebagai isi permintaan POST:

https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token

  • Ganti <tenant-name> dengan nama penyewa Azure AD B2C Anda. Contohnya, contoso.b2clogin.com.
  • Ganti <policy> dengan nama lengkap alur pengguna Anda, atau kebijakan kustom. Catatan, semua jenis alur pengguna dan kebijakan kustom mendukung alur info masuk klien. Anda dapat menggunakan alur pengguna atau kebijakan kustom apa pun yang Anda miliki, atau membuat yang baru, seperti pendaftaran atau masuk.
Tombol Nilai
grant_type client_credentials
client_id ID Klien dari Langkah 2 Daftarkan aplikasi.
client_secret Nilai Rahasia klien dari Langkah 2.1 Buat rahasia klien.
cakupan URI ID Aplikasi dari Langkah 1.1 Tentukan peran API web (cakupan) dan .default. Misalnya: https://contoso.onmicrosoft.com/api/.default, atau https://contoso.onmicrosoft.com/12345678-0000-0000-0000-000000000000/.default.

Permintaan POST yang sebenarnya terlihat seperti contoh berikut:

Permintaan:

POST /<tenant-name>.onmicrosoft.com/B2C_1A_SUSI/oauth2/v2.0/token HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=33333333-0000-0000-0000-000000000000
&client_secret=FyX7Q~DuPJ...
&scope=https%3A%2F%2Fcontoso.onmicrosoft.com%2Fapi%2F.default

Respons:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IlBFcG5OZDlnUkNWWUc2dUs...",
    "token_type": "Bearer",
    "not_before": 1645172292,
    "expires_in": 3600,
    "expires_on": 1645175892,
    "resource": "33333333-0000-0000-0000-000000000000"
}

Pelajari tentang klaim token akses kembali. Tabel berikut mencantumkan klaim yang terkait dengan alur kredensial klien.

Klaim Deskripsi Value
aud Mengidentifikasi penerima token yang dimaksud. ID Klien API.
sub Perwakilan layanan mengaitkan dengan aplikasi yang memulai permintaan. Ini adalah perwakilan layanan dari client_id permintaan otorisasi.
azp Pihak yang berwenang - pihak tempat token akses dikeluarkan. ID Klien dari aplikasi yang memulai permintaan. Ini adalah nilai yang sama dengan yang Anda tentukan dalam client_id permintaan otorisasi.
scp Kumpulan cakupan yang diekspos oleh API aplikasi Anda (pemisah ruang). Dalam alur kredensial klien, permintaan otorisasi meminta cakupan .default, sementara token berisi daftar cakupan yang diekspos (dan disetujui oleh administrator aplikasi) oleh API. Contohnya, app.read app.write.

Langkah 3.1 Dapatkan token akses dengan skrip

Gunakan skrip PowerShell berikut untuk menguji konfigurasi Anda:

$appId = "<client ID>"
$secret = "<client secret>"
$endpoint = "https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy>/oauth2/v2.0/token"
$scope = "<Your API id uri>/.default"
$body = "grant_type=client_credentials&scope=" + $scope + "&client_id=" + $appId + "&client_secret=" + $secret

$token = Invoke-RestMethod -Method Post -Uri $endpoint -Body $body

Gunakan skrip cURL berikut untuk menguji konfigurasi Anda:

curl --location --request POST 'https://<your-tenant>.b2clogin.com/<your-tenant>.onmicrosoft.com/<policy>/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--form 'grant_type="client_credentials"' \
--form 'client_id="<client ID>"' \
--form 'client_secret="<client secret>"' \
--form 'scope="<Your API id uri>/.default"'

Langkah 4: Sesuaikan token

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

Kebijakan kustom menyediakan cara untuk memperluas proses penerbitan token. Untuk menyesuaikan perjalanan pengguna kredensial Klien OAuth 2.0, ikuti panduan cara mengonfigurasi perjalanan pengguna kredensial klien. Kemudian, di profil teknis JwtIssuer, tambahkan metadata ClientCredentialsUserJourneyId dengan referensi ke perjalanan pengguna yang Anda buat.

Contoh berikut menunjukkan cara menambahkan ClientCredentialsUserJourneyId ke profil teknis penerbit token.

<TechnicalProfile Id="JwtIssuer">
  <Metadata>
    <Item Key="ClientCredentialsUserJourneyId">ClientCredentialsJourney</Item>
  </Metadata>
</TechnicalProfile>

Contoh berikut menunjukkan perjalanan pengguna info masuk klien. Langkah-langkah orkestrasi pertama dan terakhir diperlukan.

<UserJourneys>
  <UserJourney Id="ClientCredentialsJourney">
    <OrchestrationSteps>
      <!-- [Required] Do the client credentials -->
      <OrchestrationStep Order="1" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="ClientCredSetupExchange" TechnicalProfileReferenceId="ClientCredentials_Setup" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Optional] Call a REST API or claims transformation -->
      <OrchestrationStep Order="2" Type="ClaimsExchange">
        <ClaimsExchanges>
          <ClaimsExchange Id="TokenAugmentation" TechnicalProfileReferenceId="TokenAugmentation" />
        </ClaimsExchanges>
      </OrchestrationStep>

      <!-- [Required] Issue the access token -->
      <OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
    </OrchestrationSteps>
  </UserJourney>
</UserJourneys>

Langkah berikutnya

Pelajari cara menyiapkan alur informasi masuk kata sandi pemilik sumber daya di Azure AD B2C