Sdílet prostřednictvím


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 applies_to použité k vyžádání tokenu. Tato hodnota je identifikátor URI HTTP nebo HTTPS.

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

Viz také

Koncepty

Architektura služby ACS
Komponenty ACS 2.0