Formáty tokenů podporované v ACS
Aktualizováno: 19. června 2015
Platí pro: Azure
Když webové aplikace a služby zpracovávají ověřování pomocí Microsoft Azure Active Directory Access Control (označované také jako služba Access Control nebo ACS), klient musí získat token zabezpečení vydaný službou ACS, aby se přihlásil k vaší aplikaci nebo službě. Služba ACS může vydávat tokeny zabezpečení v následujících formátech:
Jazyk SAML (Security Assertion Markup Language) 1.1 a 2.0
Jednoduchý webový token (SWT)
Webový token JSON (JWT)
Poznámka
Služba ACS může vydávat tokeny zabezpečení v libovolném z následujících formátů. Formát tokenu, který služba ACS používá pro webovou aplikaci nebo službu, je určen konfigurací aplikace předávající strany. Informace o konfiguraci aplikací předávající strany najdete v tématu Aplikace předávající strany.
Jazyk SAML (Security Assertion Markup Language) 1.1 a 2.0
Jazyk SAML (Security Assertion Markup Language) je nejstarší a nejběžnější formát tokenů, které se dnes používají pro jednotné přihlašování (SSO) a identitu založenou na deklaracích. SAML určuje formát XML pro tokeny a protokoly pro provádění webové aplikace nebo jednotného přihlašování webové služby pomocí tokenů SAML. Další informace o tokenech SAML najdete v tématu Specifikace SAML (https://go.microsoft.com/fwlink/?LinkID=213719).
Poznámka
Tokeny SAML 1.1 a SAML 2.0 jsou široce podporovány řadou vývojových platforem, včetně Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Následuje příklad tokenu 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>
Jednoduchý webový token (SWT)
Tokeny SWT (Simple Web Token) splňují specifikaci SimpleWebToken. Tokeny SWT se vyjadřují jako páry klíč/hodnota s kódováním formuláře podepsané kryptografickým klíčem. Specifikace vyžaduje přítomnost některých párů klíč/hodnota, ale ponechá prostor pro páry klíč/hodnota specifické pro aplikaci. Klíče, které jsou vždy přítomné v tokenu SWT vydaném službou ACS, se zobrazují v následující tabulce.
Klíč | Popis |
---|---|
Vystavitel |
Reprezentace oboru názvů služby ACS, který token vydal. Vzor této hodnoty je https://< servicenamespace.accesscontrol.windows.net/>. |
Cílová skupina |
Hodnota |
Konec platnosti |
Epocha, kdy platnost tokenu vyprší. |
HMACSHA256 |
Podpis HMACSHA256 všech ostatních párů klíč/hodnota Tento pár klíč/hodnota je vždy poslední pár klíč/hodnota v tokenu. Je podepsaná reprezentace ostatních párů klíč/hodnota (včetně deklarací identity specifických pro aplikaci). |
Kromě těchto párů klíč/hodnota služba ACS před vystavením přidá do tokenu jednu nebo více deklarací identity. Tyto deklarace identity jsou řízeny konfigurací pravidla, která se nachází v ACS v době žádosti o token. Všechny takové deklarace identity mají typ a jednu nebo více hodnot, kde typ i hodnoty jsou řetězce. Pokud deklarace identity obsahuje více než jednu hodnotu, jsou hodnoty oddělené čárkou (","). Deklarace identity se kódují jako páry klíč/hodnota, přesně jako páry klíč/hodnota popsané v předchozí tabulce.
Následuje příklad tokenu služby ACS, který obsahuje deklarace identity reprezentované jako páry klíč/hodnota.
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
S výjimkou páru klíč/hodnota HMACSHA256 můžou být tyto páry v libovolném pořadí. Následující token služby ACS je ekvivalentní předchozímu tokenu služby ACS s výjimkou podpisů, které se liší.
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
Následující tabulka ukazuje obsah tokenu s dekódovanými hodnotami adresy URL.
Zdroj | Klíč | Zakódovaná hodnota adresy URL | Dekódovaná hodnota adresy URL |
---|---|---|---|
Uživatelem definované deklarace identity |
role |
Správce%2cUser |
správce, uživatel |
customerName |
Contoso%20Corporation |
Contoso Corporation |
|
Deklarace identity definované systémem |
Vystavitel |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Cílová skupina |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
Konec platnosti |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
Webový token JSON (JWT)
Podpora webového tokenu JSON (JWT) se přidává v beta verzi, což znamená, že může dojít k zásadním změnám bez předchozího upozornění.
Implementace ACS formátu tokenu JWT se řídí konceptem 9 specifikace JWT. Další informace naleznete v tématu https://go.microsoft.com/fwlink/?LinkID=253666. Podobně jako tokeny SWT je JWT kompaktní formát tokenu, který je vhodný pro webové služby REST. Na rozdíl od formátu SWT podporuje JWT různé možnosti podepisování. ACS podporuje symetrické i asymetrické podpisy pro tokeny JWT. Deklarace identity, které jsou vždy přítomné v tokenech JWT vydaných službou ACS, jsou uvedené v následující tabulce.
Deklarovat | Typ deklarace použité JWT | Description |
---|---|---|
Vystavitel |
Iss |
Reprezentace Access Control oboru názvů, který token vydal. Vzor této hodnoty je https://< namespace.accesscontrol.windows.net/> |
Cílová skupina |
aud |
Hodnota oboru použitého k vyžádání tokenu. Tato hodnota slouží k identifikaci zamýšleného příjemce tokenu. |
Neplatný před |
Nbf |
Epocha, před kterou token není platný. |
Konec platnosti |
exp |
Epocha, kdy platnost tokenu vyprší. |
Pro tokeny JWT se podporují následující algoritmy:
Identifikátor algoritmu v hlavičce JWT | Description |
---|---|
HS256 |
HMAC pomocí algoritmu hash SHA-256 Pro podepisování JWT s symetrickým klíčem . |
RS256 |
RSA pomocí algoritmu hash SHA-256. Pro podepisování asymetrického klíče JWT pomocí certifikátu x509. |
Tady je příklad tokenu JWT:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
JWT se skládá ze segmentů, které jsou oddělené znakem ".". Následující tabulka ukazuje dekódované segmenty tokenu JWT:
JWT Segment | Hodnota |
---|---|
Hlavička JWT |
{"typ":"JWT","alg":"HS256"} |
Sada deklarací identity JWT |
{"aud":"https://contoso.com/relyingparty""iss":"https://contoso.accesscontrol.windows.net/"";"nbf":1336067338;"exp":1336070938;"nameid":"clientApp","identityprovider":"contoso.com"} |
Podpis |
_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw |
Jedna deklarace identity s více hodnotami je reprezentována jako pole JSON. Pokud je například uživatel členem více rolí, zobrazí se deklarace identity role takto:
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
Tokeny a protokoly ACS
Když se vydá token SAML 2.0, SAML 1.1, SWT, JWT, používá ACS k vrácení tokenu do webové aplikace nebo služby různé standardní protokoly. ACS podporuje následující kombinace formátu tokenu nebo protokolu:
Služba ACS může vydávat a vracet tokeny SAML 2.0 přes protokoly WS-Trust a WS-Federation (v závislosti na protokolu použitém v požadavku tokenu).
Služba ACS může vydávat a vracet tokeny SAML 1.1 přes WS-Federation a související protokoly WS-Trust (v závislosti na protokolu použitém v požadavku tokenu).
Služba ACS může vydávat a vracet tokeny SWT přes protokoly WS-Federation, WS-Trust a OAuth WRAP nebo OAuth 2.0 (v závislosti na protokolu použitém v požadavku tokenu).
Služba ACS může vydávat tokeny JWT přes protokoly WS-Federation, WS-Trust a OAuth 2.0 (v závislosti na protokolu použitém v požadavku tokenu).