Tokenformat som stöds i ACS
Uppdaterad: 19 juni 2015
Gäller för: Azure
När dina webbprogram och tjänster hanterar autentisering med Microsoft Azure Active Directory Access Control (kallas även Access Control Service eller ACS) måste klienten hämta en säkerhetstoken som utfärdats av ACS för att logga in på ditt program eller din tjänst. ACS kan utfärda säkerhetstoken i följande format:
Security Assertion Markup Language (SAML) 1.1 och 2.0
Enkel webbtoken (SWT)
JSON-webbtoken (JWT)
Anteckning
ACS kan utfärda säkerhetstoken i något av följande format. Det tokenformat som ACS använder för ett webbprogram eller en tjänst bestäms av den förlitande partens programkonfiguration. Information om hur du konfigurerar program för förlitande part finns i Program för förlitande part.
Security Assertion Markup Language (SAML) 1.1 och 2.0
Security Assertion Markup Language (SAML) är det äldsta och vanligaste formatet för token som används idag för enkel inloggning (SSO) och anspråksbaserad identitet. SAML anger ett XML-format, för token och protokoll, för att utföra ett webbprogram eller en enkel inloggning för webbtjänsten med SAML-token. Mer information om SAML-token finns i SAML-specifikationer (https://go.microsoft.com/fwlink/?LinkID=213719).
Anteckning
SAML 1.1- och SAML 2.0-token stöds ofta av ett antal utvecklingsplattformar, inklusive Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Följande är ett exempel på en SAML-token.
<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>
Enkel webbtoken (SWT)
SWT-token (Simple Web Token) uppfyller SimpleWebToken-specifikationen. SWT-token uttrycks som formulärkodade nyckel/värde-par signerade med en kryptografisk nyckel. Specifikationen kräver att vissa nyckel/värde-par finns, men det lämnar utrymme för programspecifika nyckel/värde-par. Nycklarna som alltid finns i en ACS-utfärdad SWT-token visas i följande tabell.
Nyckel | Beskrivning |
---|---|
Utfärdare |
En representation av acs-tjänstens namnområde som utfärdade token. Mönstret för det här värdet är https://< servicenamespace.accesscontrol.windows.net/>. |
Målgrupp |
Värdet för det |
ExpiresOn |
Epoktiden då token upphör att gälla. |
HMACSHA256 |
HMACSHA256-signaturen för alla andra nyckel/värde-par. Det här nyckel/värde-paret är alltid det sista nyckel/värde-paret i token. Den formulärkodade representationen av de andra nyckel/värde-paren (inklusive programspecifika anspråk) signeras. |
Förutom dessa nyckel/värde-par lägger ACS till ett eller flera anspråk till en token före utfärdandet. Dessa anspråk styrs av regelkonfigurationen som finns i ACS vid tidpunkten för tokenbegäran. Alla sådana anspråk har en typ och ett eller flera värden, där både typen och värdena är strängar. När ett anspråk innehåller mer än ett värde avgränsas värdena med kommatecknet (","). Anspråk kodas som nyckel/värde-par, exakt som nyckel/värde-paren som beskrivs i föregående tabell.
Följande är ett exempel på en ACS-token som innehåller anspråk som representeras som nyckel/värde-par.
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
Med undantag för nyckel/värde-paret HMACSHA256 kan dessa par vara i valfri ordning. Följande ACS-token motsvarar den tidigare ACS-token förutom de signaturer som skiljer sig åt.
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
I följande tabell visas innehållet i token med URL-avkodade värden.
Källa | Nyckel | URL-kodat värde | URL-avkodat värde |
---|---|---|---|
Användardefinierade anspråk |
roll |
Admin%2cAnvändare |
Admin,User |
customerName |
Contoso%20Corporation |
Contoso Corporation |
|
Systemdefinierade anspråk |
Utfärdare |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Målgrupp |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
ExpiresOn |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
JSON-webbtoken (JWT)
Stöd för JWT (JSON Web Token) läggs till i betaversionen, vilket innebär att det kan ske icke-bakåtkompatibla ändringar utan föregående meddelande.
ACS-implementeringen av JWT-tokenformatet följer utkastet 9 i JWT-specifikationen. Mer information finns i https://go.microsoft.com/fwlink/?LinkID=253666. På samma sätt som SWT-token är JWT ett kompakt tokenformat som passar för REST-webbtjänster. Till skillnad från SWT-formatet stöder JWT en mängd olika signeringsalternativ. ACS stöder både symmetriska och asymmetriska signaturer för JWT-token. Anspråken som alltid finns i ACS-utfärdade JWT-token visas i följande tabell.
Begär | Anspråkstyp som används JWT | Description |
---|---|---|
Utfärdare |
Iss |
En representation av Access Control namnrymd som utfärdade token. Mönstret för det här värdet är https://< namespace.accesscontrol.windows.net/> |
Målgrupp |
aud |
Värdet för det omfång som används för att begära token. Det här värdet används för att identifiera den avsedda mottagaren av token. |
Inte före |
Nbf |
Epoktiden som token inte är giltig. |
Förfallodatum |
exp |
Epoktiden då token upphör att gälla. |
Följande algoritmer stöds för JWT-token:
Algoritmidentifierare i JWT-huvud | Description |
---|---|
HS256 |
HMAC med sha-256-hashalgoritm. För att signera JWT med en symmetrisk nyckel . |
RS256 |
RSA med sha-256-hashalgoritm. För signering av JWT en asymmetrisk nyckel, med hjälp av en x509 med certifikat. |
Här är ett exempel på en JWT-token:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
JWT består av segment som avgränsas med ".". I följande tabell visas de avkodade segmenten för en JWT-token:
JWT-segment | Värde |
---|---|
JWT-rubrik |
{"typ":"JWT","alg":"HS256"} |
JWT-anspråksuppsättning |
{"aud":"https://contoso.com/relyingparty","iss":"https://contoso.accesscontrol.windows.net/","nbf":1336067338,"exp":1336070938,"nameid":"clientApp","identitetsprovider":"contoso.com"} |
Signatur |
_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw |
Ett enda anspråk med flera värden representeras som en JSON-matris. Om en användare till exempel är medlem i flera roller visas rollanspråket på följande sätt:
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
ACS-token och protokoll
När en SAML 2.0, SAML 1.1, SWT, JWT-token utfärdas använder ACS olika standardprotokoll för att returnera token till ett webbprogram eller en webbtjänst. ACS stöder följande kombinationer av tokenformat/protokoll:
ACS kan utfärda och returnera SAML 2.0-token över protokollen WS-Trust och WS-Federation (beroende på vilket protokoll som används i tokenbegäran).
ACS kan utfärda och returnera SAML 1.1-token över WS-Federation och relaterade WS-Trust protokoll (beroende på vilket protokoll som används i tokenbegäran).
ACS kan utfärda och returnera SWT-token över protokollen WS-Federation, WS-Trust och OAuth WRAP eller OAuth 2.0 (beroende på vilket protokoll som används i tokenbegäran).
ACS kan utfärda JWT-token över protokollen WS-Federation, WS-Trust och OAuth 2.0 (beroende på vilket protokoll som används i tokenbegäran).