Panggilan layanan ke layanan menggunakan info masuk klien (rahasia bersama atau sertifikat)

Peringatan

Konten ini untuk titik akhir Azure AD v1.0 yang lebih lama. Gunakan platform identitas Microsoft untuk proyek baru.

Alur Pemberian Info Masuk Klien OAuth 2.0 mengizinkan layanan web (klien rahasia) untuk menggunakan kredesialnya sendiri, bukan meniru pengguna, untuk mengautentikasi saat memanggil layanan web lain. Dalam skenario ini, klien biasanya adalah layanan web tingkat menengah, layanan daemon, atau situs web. Untuk tingkat jaminan yang lebih tinggi, Microsft Azure Active Directory juga memungkinkan layanan panggilan menggunakan sertifikat (bukan rahasia bersama) sebagai informasi masuk.

Diagram alur pemberian info masuk klien

Diagram berikut menjelaskan cara kerja alur pemberian info masuk klien di Azure Active Directory (Azure AD).

OAuth2.0 Client Credentials Grant Flow

  1. Aplikasi klien mengautentikasi ke titik akhir penerbitan token Microsft Azure Active Directory dan meminta token akses.
  2. Titik akhir penerbitan token Azure Active Directory mengeluarkan token aksesnya.
  3. Token akses digunakan untuk mengautentikasi ke sumber daya aman.
  4. Data dari sumber daya aman dikembalikan ke aplikasi klien.

Mendaftarkan Layanan di Microsft Azure Active Directory

Daftarkan layanan panggilan dan layanan penerimaan di Azure Active Directory (Azure AD). Untuk instruksi detail, lihat Mengintegrasikan aplikasi dengan Microsoft Azure Active Directory.

Mendapatkan Token Akses

Untuk meminta token akses, gunakan HTTP POST ke titik akhir Microsft Azure Active Directory khusus penyewa.

https://login.microsoftonline.com/<tenant id>/oauth2/token

Permintaan token akses layanan-ke-layanan

Ada dua kasus yang tergantung pada apakah aplikasi klien memilih untuk diamankan oleh rahasia bersama atau sertifikat.

Kasus pertama: Mengakses permintaan token dengan rahasia bersama

Saat menggunakan rahasia bersama, permintaan token akses layanan ke layanan berisi parameter berikut:

Parameter Jenis Deskripsi
grant_type diperlukan Menentukan tipe pemberian yang diminta. Dalam alur Pemberian Info Masuk Klien, nilai harus client_credentials.
client_id diperlukan Menentukan id klien Microsft Azure Active Directory dari layanan web panggilan. Untuk menemukan ID klien aplikasi panggilan, di portal Microsoft Azure, klik Microsft Azure Active Directory, klik Pendaftaran aplikasi, klik aplikasi. client_id adalah ID Aplikasi
client_secret diperlukan Masukkan kunci yang terdaftar untuk layanan web panggilan atau aplikasi daemon di Microsft Azure Active Directory. Untuk membuat kunci, di portal Microsoft Azure, klik Microsoft Azure Active Directory, klik Pendaftaran aplikasi, klik aplikasi, klik Pengaturan, klik Kunci, dan tambahkan Kunci. URL mengenkode rahasia ini saat menyediakannya.
sumber daya diperlukan Masukkan URI ID Aplikasi dari layanan web penerima. Untuk menemukan URI ID Aplikasi, di portal Microsoft Azure, klik Microsoft Azure Active Directory, klik Pendaftaran aplikasi, klik aplikasi layanan, lalu klik Pengaturan dan Properti.

Contoh

HTTP POST berikut meminta token akses untuk layanan web https://service.contoso.com/. client_id mengidentifikasi layanan web yang meminta token akses.

POST /contoso.com/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials&client_id=625bc9f6-3bf6-4b6d-94ba-e97cf07a22de&client_secret=qkDwDJlDfig2IpeuUZYKH1Wb8q1V0ju6sILxQQqhJ+s=&resource=https%3A%2F%2Fservice.contoso.com%2F

Kasus kedua: Meminta token akses dengan sertifikat

Permintaan token akses layanan ke layanan dengan sertifikat berisi parameter berikut:

Parameter Jenis Deskripsi
grant_type diperlukan Menentukan jenis respons yang diminta. Dalam alur Pemberian Info Masuk Klien, nilai harus client_credentials.
client_id diperlukan Menentukan id klien Microsft Azure Active Directory dari layanan web panggilan. Untuk menemukan ID klien aplikasi panggilan, di portal Microsoft Azure, klik Microsft Azure Active Directory, klik Pendaftaran aplikasi, klik aplikasi. client_id adalah ID Aplikasi
client_assertion_type diperlukan Nilainya harus urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion diperlukan Pernyataan (Token Web JSON) yang perlu Anda buat dan tanda tangani dengan sertifikat yang Anda daftarkan sebagai info masuk untuk aplikasi Anda. Baca info masuk sertifikat untuk mempelajari cara mendaftarkan sertifikat Anda dan format pernyataan.
sumber daya diperlukan Masukkan URI ID Aplikasi dari layanan web penerima. Untuk menemukan URI ID Aplikasi, di portal Microsoft Azure, klik Microsoft Azure Active Directory, klik Pendaftaran aplikasi, klik aplikasi layanan, lalu klik Pengaturan dan Properti.

Perhatikan bahwa parameter hampir sama seperti dalam kasus permintaan dengan rahasia bersama, kecuali bahwa parameter client_secret digantikan oleh dua parameter: client_assertion_type dan client_assertion.

Contoh

HTTP POST berikut meminta token akses untuk layanan web https://service.contoso.com/ dengan sertifikat. client_id mengidentifikasi layanan web yang meminta token akses.

POST /<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

resource=https%3A%2F%contoso.onmicrosoft.com%2Ffc7664b4-cdd6-43e1-9365-c2e1c4e1b3bf&client_id=97e0a5b7-d745-40b6-94fe-5f77d35c6e05&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg&grant_type=client_credentials

Respons Token Akses Layanan-ke-Layanan

Respons sukses berisi respons JSON OAuth 2.0 dengan parameter berikut:

Parameter Deskripsi
access_token Token akses yang diminta. Layanan web panggilan dapat menggunakan token ini untuk mengautentikasi ke layanan web penerima.
token_type Menunjukkan nilai jenis token. Satu-satunya jenis yang didukung AAD adalah Token pembawa. Untuk informasi selengkapnya tentang token pembawa, lihat Kerangka Kerja Otorisasi OAuth 2.0: Penggunaan Token Pembawa (RFC 6750).
expires_in Berapa lama token akses berlaku/valid (dalam detik).
expires_on Rentang waktu kapan token akses kedaluwarsa. Tanggal tersebut dinyatakan sebagai jumlah detik dari 1970-01-01T0:0:0Z UTC hingga waktu kedaluwarsa. Nilai ini digunakan untuk menentukan masa pakai token cache.
not_before Waktu saat token akses menjadi dapat digunakan. Tanggal tersebut dinyatakan sebagai jumlah detik dari 1970-01-01T0:0:0Z UTC hingga waktu validitas untuk token.
sumber daya URI ID Aplikasi dari layanan web penerima.

Contoh respons

Contoh berikut memperlihatkan respons sukses atas permintaan token akses untuk layanan web.

{
"access_token":"eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw",
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1388452167",
"resource":"https://service.contoso.com/"
}

Gunakan token akses untuk mengakses sumber daya yang aman

Layanan dapat menggunakan token akses yang diperoleh untuk membuat permintaan yang diautentikasi ke API web hilir dengan mengatur token di header Authorization.

Contoh

GET /me?api-version=2013-11-08 HTTP/1.1
Host: graph.microsoft.com
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw

Lihat juga