Formaty tokenów obsługiwane w usłudze ACS
Zaktualizowano: 19 czerwca 2015 r.
Dotyczy: Azure
Gdy aplikacje internetowe i usługi obsługują uwierzytelnianie za pomocą Microsoft Azure Active Directory Access Control (znanej również jako usługa Access Control lub ACS), klient musi uzyskać token zabezpieczający wystawiony przez usługę ACS, aby zalogować się do aplikacji lub usługi. Usługa ACS może wystawiać tokeny zabezpieczające w następujących formatach:
Security Assertion Markup Language (SAML) 1.1 i 2.0
Prosty token internetowy (SWT)
Token internetowy JSON (JWT)
Uwaga
Usługa ACS może wystawiać tokeny zabezpieczające w dowolnym z następujących formatów. Format tokenu używany przez usługę ACS dla aplikacji internetowej lub usługi jest określany przez konfigurację aplikacji jednostki uzależnionej. Aby uzyskać informacje na temat konfigurowania aplikacji jednostki uzależnionej, zobacz Aplikacje jednostki uzależnionej.
Security Assertion Markup Language (SAML) 1.1 i 2.0
Security Assertion Markup Language (SAML) to najstarszy i najbardziej typowy format tokenów używanych obecnie na potrzeby logowania jednokrotnego i tożsamości opartej na oświadczeniach. SAML określa format XML dla tokenów, a także protokołów, do wykonywania aplikacji internetowej lub logowania jednokrotnego usługi internetowej przy użyciu tokenów SAML. Aby uzyskać więcej informacji na temat tokenów SAML, zobacz specyfikacje SAML (https://go.microsoft.com/fwlink/?LinkID=213719).
Uwaga
Tokeny SAML 1.1 i SAML 2.0 są powszechnie obsługiwane przez wiele platform programistycznych, w tym Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Poniżej przedstawiono przykład 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>
Prosty token internetowy (SWT)
Proste tokeny tokenu internetowego (SWT) są zgodne ze specyfikacją SimpleWebToken. Tokeny SWT są wyrażane jako pary klucz/wartość zakodowane w formie podpisane przy użyciu klucza kryptograficznego. Specyfikacja nakazuje obecność niektórych par klucz/wartość, ale pozostawia miejsce dla par klucz/wartość specyficzna dla aplikacji. Klucze, które są zawsze obecne w tokenie SWT wystawionym przez usługę ACS, są wyświetlane w poniższej tabeli.
Klucz | Opis |
---|---|
Wystawca |
Reprezentacja przestrzeni nazw usługi ACS, która wystawiła token. Wzorzec tej wartości to https://< servicenamespace.accesscontrol.windows.net/>. |
Grupy odbiorców |
Wartość użyta |
Wygasanie |
Czas epoki wygaśnięcia tokenu. |
HMACSHA256 |
Podpis HMACSHA256 wszystkich pozostałych par klucz/wartość. Ta para klucz/wartość jest zawsze ostatnią parą klucz/wartość w tokenie. Podpisuje się zakodowana w formularzu reprezentacja innych par klucz/wartość (w tym oświadczenia specyficzne dla aplikacji). |
Oprócz tych par klucz/wartość usługa ACS dodaje co najmniej jedno oświadczenie do tokenu przed wystawieniem. Te oświadczenia są oparte na konfiguracji reguły obecnej w usłudze ACS w momencie żądania tokenu. Wszystkie takie oświadczenia mają typ i co najmniej jedną wartość, w której zarówno typ, jak i wartości są ciągami. Jeśli oświadczenie zawiera więcej niż jedną wartość, wartości są oddzielone przecinkiem (","). Oświadczenia są kodowane jako pary klucz/wartość, dokładnie tak jak pary klucz/wartość opisane w poprzedniej tabeli.
Poniżej przedstawiono przykład tokenu ACS, który zawiera oświadczenia reprezentowane jako pary klucz/wartość.
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
Z wyjątkiem pary klucz/wartość HMACSHA256 te pary mogą być w dowolnej kolejności. Poniższy token ACS jest odpowiednikiem poprzedniego tokenu ACS z wyjątkiem podpisów, które są inne.
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
W poniższej tabeli przedstawiono zawartość tokenu z dekodowanymi wartościami adresu URL.
Element źródłowy | Klucz | Wartość zakodowana w adresie URL | Zdekodowana wartość adresu URL |
---|---|---|---|
Oświadczenia zdefiniowane przez użytkownika |
role (rola) |
Administrator%2cUser |
Administrator,Użytkownik |
Customername |
Contoso%20Corporation |
Contoso Corporation |
|
Oświadczenia zdefiniowane przez system |
Wystawca |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Grupy odbiorców |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
Wygasanie |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
Token internetowy JSON (JWT)
Obsługa tokenu internetowego JSON (JWT) jest dodawana w wersji beta. Oznacza to, że mogą wystąpić zmiany powodujące niezgodność bez powiadomienia.
Implementacja acS formatu tokenu JWT jest zgodna z wersją roboczą 9 specyfikacji JWT. Aby uzyskać więcej informacji, zobacz https://go.microsoft.com/fwlink/?LinkID=253666. Podobnie jak w przypadku tokenów SWT, JWT to kompaktowy format tokenu odpowiedni dla usług internetowych REST. W przeciwieństwie do formatu SWT, JWT obsługuje różne opcje podpisywania. Usługa ACS obsługuje zarówno sygnatury symetryczne, jak i asymetryczne dla tokenów JWT. Oświadczenia, które są zawsze obecne w tokenach JWT wystawionych przez usługę ACS, są wyświetlane w poniższej tabeli.
Claim | Typ oświadczenia używany przez JWT | Opis |
---|---|---|
Wystawca |
Iss |
Reprezentacja Access Control przestrzeni nazw, która wystawiła token. Wzorzec tej wartości to https://< namespace.accesscontrol.windows.net/> |
Grupy odbiorców |
AUD |
Wartość zakresu używanego do żądania tokenu. Ta wartość służy do identyfikowania zamierzonego adresata tokenu. |
Nie wcześniej niż |
Nbf |
Czas epoki, przed którym token jest nieprawidłowy. |
Wygaśnięcie |
exp |
Czas epoki wygaśnięcia tokenu. |
Następujące algorytmy są obsługiwane w przypadku tokenów JWT:
Identyfikator algorytmu w nagłówku JWT | Opis |
---|---|
HS256 |
HMAC przy użyciu algorytmu wyznaczania wartości skrótu SHA-256. Do podpisywania JWT przy użyciu klucza symetrycznego . |
RS256 |
RSA przy użyciu algorytmu wyznaczania skrótu SHA-256. Podpisywanie JWT klucza asymetrycznego przy użyciu certyfikatu x509. |
Oto przykład tokenu JWT:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
Zestaw JWT składa się z segmentów, które są rozdzielane przy użyciu znaku "". W poniższej tabeli przedstawiono dekodowane segmenty tokenu JWT:
JWT Segment | Wartość |
---|---|
Nagłówek JWT |
{"typ":"JWT","alg":"HS256"} |
Zestaw oświadczeń 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 |
Pojedyncze oświadczenie z wieloma wartościami jest reprezentowane jako tablica JSON. Jeśli na przykład użytkownik jest członkiem wielu ról, oświadczenie roli będzie wyświetlane w następujący sposób:
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
Tokeny i protokoły USŁUGI ACS
Gdy jest wystawiany token SAML 2.0, SAML 1.1, SWT, JWT, ACS używa różnych standardowych protokołów do zwracania tokenu do aplikacji internetowej lub usługi. Usługa ACS obsługuje następujące kombinacje formatu/protokołu tokenu:
Usługa ACS może wystawiać i zwracać tokeny SAML 2.0 za pośrednictwem protokołów WS-Trust i WS-Federation (w zależności od protokołu używanego w żądaniu tokenu).
Usługa ACS może wystawiać i zwracać tokeny SAML 1.1 za pośrednictwem WS-Federation i powiązanych protokołów WS-Trust (w zależności od protokołu używanego w żądaniu tokenu).
Usługa ACS może wystawiać i zwracać tokeny SWT za pośrednictwem protokołów WS-Federation, WS-Trust i OAuth WRAP lub OAuth 2.0 (w zależności od protokołu używanego w żądaniu tokenu).
Usługi ACS mogą wystawiać tokeny JWT za pośrednictwem protokołów WS-Federation, WS-Trust i OAuth 2.0 (w zależności od protokołu używanego w żądaniu tokenu).