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