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 applies_to som används för att begära token. Det här värdet är antingen en HTTP- eller HTTPS-URI.

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

Se även

Begrepp

ACS-arkitektur
ACS 2.0-komponenter