Udostępnij za pośrednictwem


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 applies_to do żądania tokenu. Ta wartość jest identyfikatorem URI HTTP lub HTTPS.

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

Zobacz też

Pojęcia

Architektura usług ACS
Składniki ACS 2.0