Format Token Didukung di ACS
Diperbarui: 19 Juni 2015
Berlaku Untuk: Azure
Saat aplikasi dan layanan web Anda menangani autentikasi dengan Microsoft Azure Active Directory Access Control (juga dikenal sebagai Access Control Service atau ACS), klien harus mendapatkan token keamanan yang dikeluarkan oleh ACS untuk masuk ke aplikasi atau layanan Anda. ACS dapat mengeluarkan token keamanan dalam format berikut:
Security Assertion Markup Language (SAML) 1.1 dan 2.0
Token Web Sederhana (SWT)
Token Web JSON (JWT)
Catatan
ACS dapat mengeluarkan token keamanan dalam salah satu format berikut. Format token yang digunakan ACS untuk aplikasi web atau layanan ditentukan oleh konfigurasi aplikasi pihak yang mengandalkan. Untuk informasi tentang mengonfigurasi aplikasi pihak yang mengandalkan, lihat Mengandalkan Aplikasi Pihak.
Security Assertion Markup Language (SAML) 1.1 dan 2.0
Security Assertion Markup Language (SAML) adalah format token terlama dan paling umum yang digunakan saat ini untuk akses menyeluruh (SSO) dan identitas berbasis klaim. SAML menentukan format XML, untuk token serta protokol, untuk melakukan aplikasi web atau SSO layanan web menggunakan token SAML. Untuk informasi selengkapnya tentang token SAML, lihat Spesifikasi SAML (https://go.microsoft.com/fwlink/?LinkID=213719).
Catatan
Token SAML 1.1 dan SAML 2.0 banyak didukung oleh sejumlah platform pengembangan, termasuk Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Berikut ini adalah contoh token SAML.
<assertion id="_4fe09cda-cad9-49dd-b493-93494e1ae4f9" issueinstant="2012-09-18T20:42:11.626Z"
version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<issuer>https://test05.accesscontrol.windows.net/</issuer>
<ds:signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:signedinfo>
<ds:canonicalizationmethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:signaturemethod algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:reference uri="#_4fe09cda-cad9-49dd-b493-93494e1ae4f9">
<ds:transforms>
<ds:transform algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:transform algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:transforms>
<ds:digestmethod algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
<ds:digestvalue>8qmfRKuATFuo4M96xuci7HCLUGUeO3eBxHOi9/HaFNU=</ds:digestvalue>
</ds:reference>
</ds:signedinfo>
<ds:signaturevalue>UWcXJElfrP8hfdNi8ipzSjfxCYGYzoylkn5HdSa8IhphvyZBvbZl1OFEbMSygoo8xNgnywUNPuzZP8nV7CwZNuSWVZZSrF2pHAswBKQoJoodpzrGRR0ruT+A2sjXfnLQqN+X/xanXqqg4ViUOR9xHvn8vzaRwYxPPsjI4OXq0hzLlyuBzhw42XHzZk1qknQr1wp/lZTMwrFnY38gziUZ+Ci1Duen5Xt9k+0ZFujtSBqJKIran1V263o8CkvoahNcNKT//OcXc3va7zeJf67V9/lwY34MkFoqqfeuTSzEuZfk7pYRNqwhOZGhokpR+1qHjEbJr3p6dOOPkuQp9p6zsQ==</ds:signaturevalue>
<keyinfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data> <X509Certificate>MIIDCDCCAfCgAwIBAgIQRmI8p7P/aphMv5Kr9vQpqTANBgkqhkiG9w0BAQUFADAtMSswKQYDVQQDEyJBQVJPTkJPT0subnRkZXYuY29ycC5taWNyb3NvZnQuY29tMB4XDTEyMDUyMTIzMjMxMFoXDTEzMDUyMTAwMDAwMFowLTErMCkGA1UEAxMiQUFST05CT09LLm50ZGV2LmNvcnAubWljcm9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI79l6EOSWswJn3d9i4yfZh9Cwo2XNhb4tOWvmljCKFlrWoz/Drch5aOzdmI/yFaqkyX7BXc/zoSmX1n3VkqHIeJkGECcZX2bD4jPuICVmKBcXo0SeQ+2vF6DoqjVKaegWrPsqmDrlCscnlMLb11Fg1Ffqkm8wyyWwbQvC5VnVf0i9DPE0n+i3NJi9cT57obrNRkQzwfBZy08I2JlpxLfaUUDhHlF99C1MtBduzn3au+S20gom1cHAcSvHBormXbjPZ5F6RJUz7kO/U+M5rYkiS+vtANtnBlUAK8fRmEUrYFRMr1tyiOXcRid/7UJP3e0EmAsneMnuD9WO/mK6MuzIECAwEAAaMkMCIwCwYDVR0PBAQDAgQwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBCRM9maY5ZE+wIxefxjT0IAqp7H6l062PKOGdld5MapOJUWbng2CrfUV3YI5OSD9yhevgDne3jf2DUBv5QndHdms+FL260ydDmwet4A5kJi3ZBO4sR/PZTz3FdeeOwdTeUS2wAMJuphAZ1+PUVk25bbEu/DKmgeYzRn64CHWqk5sPKzH9jAszvX2EeoClI+8Sp/bXHTwzEUOFYcicPOO+tuFTqHOYBDT5bE42rAp/SaC1wXbmTCGS12gfCZCrlml6LZNTsKQWBF2szXOPGcFcInGkauZDUUtZd+921uy0E/sYwgNfi8phU1aGZjIESVFQ70LpfvIMwF6++BRX12icW</X509Certificate>
</X509Data>
</keyinfo>
</ds:signature>
<subject>
<NameID>abc1def2ghi3jkl4mno5pqr6stu7vwx8yza9bcd0efg=</NameID>
<SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer" />
</subject>
<conditions notbefore="2012-09-18T20:42:11.610Z" notonorafter="2012-09-18T21:42:11.610Z">
<AudienceRestriction>
<Audience>https://localhost:63000/</Audience>
</AudienceRestriction>
</conditions>
<attributestatement>
<Attribute Name="https://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider">
<AttributeValue>uri:WindowsLiveID</AttributeValue>
</Attribute>
</attributestatement>
</assertion>
Token Web Sederhana (SWT)
Token Simple Web Token (SWT) mematuhi spesifikasi SimpleWebToken. Token SWT dinyatakan sebagai pasangan kunci/nilai yang dikodekan formulir yang ditandatangani dengan kunci kriptografi. Spesifikasi ini mengamanatkan keberadaan beberapa pasangan kunci/nilai, tetapi meninggalkan ruang untuk pasangan kunci/nilai khusus aplikasi. Kunci yang selalu ada dalam token SWT yang dikeluarkan ACS ditampilkan dalam tabel berikut.
Kunci | Deskripsi |
---|---|
Pengeluar sertifikat |
Representasi namespace layanan ACS yang mengeluarkan token. Pola untuk nilai ini adalah https://< servicenamespace.accesscontrol.windows.net/>. |
Audiens |
Nilai yang |
ExpiresOn |
Waktu Epoch di mana token kedaluwarsa. |
HMACSHA256 |
Tanda tangan HMACSHA256 dari semua pasangan kunci/nilai lainnya. Pasangan kunci/nilai ini selalu merupakan pasangan kunci/nilai terakhir dalam token. Representasi yang dikodekan formulir dari pasangan kunci/nilai lainnya (termasuk klaim khusus aplikasi) ditandatangani. |
Selain pasangan kunci/nilai ini, ACS menambahkan satu atau beberapa klaim ke token sebelum penerbitan. Klaim ini didorong oleh konfigurasi aturan yang ada di ACS pada saat permintaan token. Semua klaim tersebut memiliki jenis dan satu atau beberapa nilai, di mana jenis dan nilainya adalah string. Saat klaim berisi lebih dari satu nilai, nilai dipisahkan oleh karakter koma (","). Klaim dikodekan sebagai pasangan kunci/nilai, persis seperti pasangan kunci/nilai yang dijelaskan dalam tabel sebelumnya.
Berikut ini adalah contoh token ACS yang berisi klaim yang direpresentasikan sebagai pasangan kunci/nilai.
Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255913549Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&role=Admin%2cUser&role=Admin%2cUser&&HMACSHA256=sT7Hr9z%2b3t1oDFLpq5GOToVsu6Dyxpq7hHsSAznmwnI%3d
Dengan pengecualian pasangan kunci/nilai HMACSHA256, pasangan ini dapat berada dalam urutan apa pun. Token ACS berikut setara dengan token ACS sebelumnya kecuali untuk tanda tangan yang berbeda.
role=Admin%2cUser&customerName=Contoso%20Corporation&Issuer=https%3a%2f%2fmyservice.accesscontrol.windows.net%2f&Audience=http%3a%2f%2flocalhost%2fmyservice&ExpiresOn=1255912922&HMACSHA256=yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d
Tabel berikut ini memperlihatkan konten token dengan nilai URL yang didekodekan.
Sumber | Kunci | Nilai yang dikodekan URL | Nilai url yang didekodekan |
---|---|---|---|
Klaim yang ditentukan pengguna |
peran |
Admin%2cUser |
Admin,Pengguna |
customerName |
Contoso%20Corporation |
Contoso Corporation |
|
Klaim yang ditentukan sistem |
Pengeluar sertifikat |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Audiens |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
ExpiresOn |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
Token Web JSON (JWT)
Dukungan JSON Web token (JWT) sedang ditambahkan dalam versi beta, ini berarti bahwa mungkin ada perubahan yang melanggar tanpa pemberitahuan.
Implementasi ACS dari format token JWT mengikuti draf 9 spesifikasi JWT. Untuk informasi selengkapnya, lihat https://go.microsoft.com/fwlink/?LinkID=253666. Mirip dengan token SWT, JWT adalah format token ringkas yang cocok untuk layanan web REST. Tidak seperti format SWT, JWT mendukung berbagai opsi penandatanganan. ACS mendukung tanda tangan simetris dan asimetris untuk token JWT. Klaim yang selalu ada dalam token JWT yang dikeluarkan ACS ditampilkan dalam tabel berikut.
Klaim | Jenis Klaim menggunakan JWT | Deskripsi |
---|---|---|
Pengeluar sertifikat |
iss |
Representasi namespace Access Control yang mengeluarkan token. Pola untuk nilai ini adalah https://< namespace.accesscontrol.windows.net/> |
Audiens |
aud |
Nilai cakupan yang digunakan untuk meminta token. Nilai ini digunakan untuk mengidentifikasi penerima token yang dimaksudkan. |
Tidak sebelum |
nbf |
Waktu Epoch sebelum token tidak valid. |
Kedaluwarsa |
exp |
Waktu Epoch di mana token kedaluwarsa. |
Algoritma berikut didukung untuk token JWT:
Pengidentifikasi algoritma di header JWT | Deskripsi |
---|---|
HS256 |
HMAC menggunakan algoritma hash SHA-256. Untuk menandatangani JWT dengan kunci konten . |
RS256 |
RSA menggunakan algoritma hash SHA-256. Untuk menandatangani JWT kunci asimetris, gunakan x509 dengan sertifikat. |
Berikut adalah contoh token JWT:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
JWT terdiri dari segmen, yang dibatasi menggunakan '.'. Tabel berikut ini memperlihatkan segmen yang didekodekan dari token JWT:
Segmen JWT | Nilai |
---|---|
JWT Header |
{"typ":"JWT","alg":"HS256"} |
Kumpulan Klaim JWT |
{"aud":"https://contoso.com/relyingparty","iss":"https://contoso.accesscontrol.windows.net/","nbf":1336067338,"exp":1336070938,"nameid":"clientApp","identityprovider":"contoso.com"} |
Tanda Tangan |
_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw |
Satu klaim dengan beberapa nilai direpresentasikan sebagai array JSON. Misalnya jika pengguna adalah anggota dari beberapa peran, klaim peran akan muncul sebagai berikut:
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
Token dan Protokol ACS
Ketika token SAML 2.0, SAML 1.1, SWT, JWT dikeluarkan, ACS menggunakan berbagai protokol standar untuk mengembalikan token ke aplikasi web atau layanan. ACS mendukung kombinasi format/protokol token berikut:
ACS dapat mengeluarkan dan mengembalikan token SAML 2.0 melalui protokol WS-Trust dan WS-Federation (tergantung pada protokol yang digunakan dalam permintaan token).
ACS dapat mengeluarkan dan mengembalikan token SAML 1.1 melalui WS-Federation dan protokol WS-Trust terkait (tergantung pada protokol yang digunakan dalam permintaan token).
ACS dapat mengeluarkan dan mengembalikan token SWT melalui protokol WS-Federation, WS-Trust, dan OAuth WRAP atau OAuth 2.0, (tergantung pada protokol yang digunakan dalam permintaan token).
ACS dapat mengeluarkan token JWT melalui protokol WS-Federation, WS-Trust, dan atau OAuth 2.0, (tergantung pada protokol yang digunakan dalam permintaan token).