Tokenindelingen die worden ondersteund in ACS

Bijgewerkt: 19 juni 2015

Van toepassing op: Azure

Wanneer uw webtoepassingen en -services verificatie verwerken met Microsoft Azure Active Directory Access Control (ook wel bekend als Access Control Service of ACS), moet de client een beveiligingstoken verkrijgen dat is uitgegeven door ACS om u aan te melden bij uw toepassing of service. ACS kan beveiligingstokens uitgeven in de volgende indelingen:

  • Security Assertion Markup Language (SAML) 1.1 en 2.0

  • Simple Web Token (SWT)

  • JSON-webtoken (JWT)

Notitie

ACS kan beveiligingstokens uitgeven in een van de volgende indelingen. De tokenindeling die ACS gebruikt voor een webtoepassing of -service wordt bepaald door de configuratie van de relying party-toepassing. Zie Relying Party-toepassingen voor informatie over het configureren van relying party-toepassingen.

Security Assertion Markup Language (SAML) 1.1 en 2.0

Security Assertion Markup Language (SAML) is de oudste en meest voorkomende indeling van tokens die momenteel worden gebruikt voor eenmalige aanmelding (SSO) en op claims gebaseerde identiteit. SAML geeft een XML-indeling op, voor tokens en protocollen, voor het uitvoeren van een webtoepassing of een webservice-SSO met behulp van SAML-tokens. Zie SAML Specifications (https://go.microsoft.com/fwlink/?LinkID=213719) voor meer informatie over SAML-tokens.

Notitie

SAML 1.1- en SAML 2.0-tokens worden breed ondersteund door een aantal ontwikkelplatforms, waaronder Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).

Hier volgt een voorbeeld van een 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>

Simple Web Token (SWT)

Swt-tokens (Simple Web Token) voldoen aan de SimpleWebToken-specificatie. SWT-tokens worden uitgedrukt als sleutel-/waardeparen die zijn ondertekend met een cryptografische sleutel. De specificatie vereist de aanwezigheid van enkele sleutel-waardeparen, maar het laat ruimte voor toepassingsspecifieke sleutel-/waardeparen. De sleutels die altijd aanwezig zijn in een door ACS uitgegeven SWT-token, worden weergegeven in de volgende tabel.

Sleutel Beschrijving

Verlener

Een weergave van de ACS-servicenaamruimte die het token heeft uitgegeven. Het patroon voor deze waarde is https://< servicenamespace.accesscontrol.windows.net/>.

Doelgroep

De waarde van de applies_to waarde die wordt gebruikt om het token aan te vragen. Deze waarde is een HTTP- of HTTPS-URI.

ExpiresOn

Het tijdvak waarop het token verloopt.

HMACSHA256

De HMACSHA256-handtekening van alle andere sleutel-/waardeparen. Dit sleutel-waardepaar is altijd het laatste sleutel-waardepaar in het token. De formuliergecodeerde weergave van de andere sleutel-waardeparen (inclusief toepassingsspecifieke claims) is ondertekend.

Naast deze sleutel-waardeparen voegt ACS een of meer claims toe aan een token vóór uitgifte. Deze claims worden aangestuurd door de regelconfiguratie die aanwezig is in ACS op het moment van de tokenaanvraag. Al deze claims hebben een type en een of meer waarden, waarbij zowel het type als de waarden tekenreeksen zijn. Wanneer een claim meer dan één waarde bevat, worden de waarden gescheiden door het kommateken (','). Claims worden gecodeerd als sleutel-waardeparen, precies zoals de sleutel-waardeparen die in de vorige tabel worden beschreven.

Hier volgt een voorbeeld van een ACS-token dat claims bevat die worden weergegeven als sleutel-waardeparen.

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

Met uitzondering van het sleutel-waardepaar HMACSHA256 kunnen deze paren in elke volgorde staan. Het volgende ACS-token is gelijk aan het vorige ACS-token, met uitzondering van de handtekeningen die verschillen.

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

In de volgende tabel ziet u de inhoud van het token met door URL gedecodeerde waarden.

Bron Sleutel Url-gecodeerde waarde Met URL gedecodeerde waarde

Door de gebruiker gedefinieerde claims

role

Admin%2cUser

Beheerder, gebruiker

customerName

Contoso%20Corporation

Contoso Corporation

Door het systeem gedefinieerde claims

Verlener

https%3a%2f%2fmyservice.accesscontrol.windows.net%2f

https://myservice.accesscontrol.windows.net/

Doelgroep

http%3a%2f%2flocalhost%2fmyservice

https://localhost/myservice

ExpiresOn

1255912922

1255912922

HMACSHA256

yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d

yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64=

JSON-webtoken (JWT)

Ondersteuning voor JSON-webtoken (JWT) wordt toegevoegd in de bètaversie. Dit betekent dat er zonder kennisgeving wijzigingen kunnen worden onderbroken.

De ACS-implementatie van de JWT-tokenindeling volgt het concept 9 van de JWT-specificatie. Voor meer informatie raadpleegt u https://go.microsoft.com/fwlink/?LinkID=253666. Net als SWT-tokens is JWT een compacte tokenindeling die geschikt is voor REST-webservices. In tegenstelling tot de SWT-indeling ondersteunt JWT diverse ondertekeningsopties. ACS ondersteunt zowel symmetrische als asymmetrische handtekeningen voor JWT-tokens. De claims die altijd aanwezig zijn in door ACS uitgegeven JWT-tokens, worden weergegeven in de volgende tabel.

Claim Claimtype gebruikt JWT Description

Verlener

Iss

Een weergave van de Access Control naamruimte die het token heeft uitgegeven. Het patroon voor deze waarde is https://< namespace.accesscontrol.windows.net/>

Doelgroep

aud

De waarde van het bereik dat wordt gebruikt om het token aan te vragen. Deze waarde wordt gebruikt om de beoogde ontvanger van het token te identificeren.

Niet voor

nbf

De tijd van epoch voordat het token ongeldig is.

Verloopdatum

Exp

Het tijdvak waarop het token verloopt.

De volgende algoritmen worden ondersteund voor JWT-tokens:

Algoritme-id in JWT-header Description

HS256

HMAC met behulp van SHA-256-hashalgoritme. Voor het ondertekenen van JWT met een symmetrische sleutel.

RS256

RSA met behulp van SHA-256-hashalgoritme. Voor het ondertekenen van JWT een asymmetrische sleutel met behulp van een x509 met certificaat.

Hier volgt een voorbeeld van een JWT-token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw. 

JWT bestaat uit segmenten, die zijn gescheiden met '.'. In de volgende tabel ziet u de gedecodeerde segmenten van een JWT-token:

JWT-segment Waarde

JWT-header

{"typ":"JWT","alg":"HS256"}

JWT-claimset

{"aud":"https://contoso.com/relyingparty""iss":"https://contoso.accesscontrol.windows.net/";"nbf":1336067338,"exp":1336070938,"nameid":"clientApp","identityprovider":"contoso.com"}

Handtekening

_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw

Eén claim met meerdere waarden wordt weergegeven als een JSON-matrix. Als een gebruiker bijvoorbeeld lid is van meerdere rollen, wordt de rolclaim als volgt weergegeven:

{
 "aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}

ACS-tokens en -protocollen

Wanneer een SAML 2.0, SAML 1.1, SWT, JWT-token wordt uitgegeven, gebruikt ACS verschillende standaardprotocollen om het token terug te keren naar een webtoepassing of -service. ACS ondersteunt de volgende combinaties van tokenindeling/protocol:

  • ACS kan SAML 2.0-tokens uitgeven en retourneren via de WS-Trust- en WS-Federation protocollen (afhankelijk van het protocol dat in de tokenaanvraag wordt gebruikt).

  • ACS kan SAML 1.1-tokens uitgeven en retourneren via de WS-Federation en de bijbehorende WS-Trust protocollen (afhankelijk van het protocol dat in de tokenaanvraag wordt gebruikt).

  • ACS kan SWT-tokens uitgeven en retourneren via de protocollen WS-Federation, WS-Trust en OAuth WRAP of OAuth 2.0 (afhankelijk van het protocol dat in de tokenaanvraag wordt gebruikt).

  • ACS kan JWT-tokens uitgeven via de WS-Federation-, WS-Trust- en of OAuth 2.0-protocollen (afhankelijk van het protocol dat in de tokenaanvraag wordt gebruikt).

Zie ook

Concepten

ACS-architectuur
ACS 2.0-onderdelen