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 applies_to digunakan untuk meminta token. Nilai ini adalah URI HTTP atau HTTPS.

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).

Lihat juga

Konsep

Arsitektur ACS
Komponen ACS 2.0