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).
- Aplikasi klien mengautentikasi ke titik akhir penerbitan token Microsft Azure Active Directory dan meminta token akses.
- Titik akhir penerbitan token Azure Active Directory mengeluarkan token aksesnya.
- Token akses digunakan untuk mengautentikasi ke sumber daya aman.
- 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