Formats de jeton pris en charge dans ACS
Mise à jour : 19 juin 2015
S’applique à : Azure
Lorsque vos applications web et services gèrent l’authentification avec Microsoft Azure Active Directory Access Control (également appelé service Access Control ou ACS), le client doit obtenir un jeton de sécurité émis par ACS pour se connecter à votre application ou service. ACS peut émettre des jetons de sécurité dans les formats suivants :
SAML (Security Assertion Markup Language) 1.1 et 2.0
Clé d’authentification Web simple (SWT)
Jeton web JSON (JWT)
Notes
ACS peut émettre des jetons de sécurité dans l’un des formats suivants. Le format de jeton utilisé par ACS pour une application web ou un service est déterminé par la configuration de l’application de partie de confiance. Pour plus d’informations sur la configuration des applications de partie de confiance, consultez Applications de partie de confiance.
SAML (Security Assertion Markup Language) 1.1 et 2.0
Security Assertion Markup Language (SAML) est le format le plus ancien et le plus courant des jetons utilisés aujourd'hui pour l'authentification unique (SSO) et l'identité basée sur des revendications. SAML spécifie un format XML, pour les jetons ainsi que pour les protocoles, pour l'exécution d'une application web ou d'un service web SSO à l'aide des jetons SAML. Pour plus d’informations sur les jetons SAML, consultez spécifications SAML (https://go.microsoft.com/fwlink/?LinkID=213719).
Notes
Les jetons SAML 1.1 et SAML 2.0 sont largement pris en charge par un certain nombre de plateformes de développement, notamment Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Voici un exemple de jeton 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>
Clé d’authentification Web simple (SWT)
Les jetons SWT sont conformes à la spécification SimpleWebToken. Ils sont exprimés sous forme de paires clé/valeur dans un format codé signées avec une clé de chiffrement. La spécification mandate la présence de certaines paires clé/valeur, mais elle laisse de la place aux paires clé/valeur spécifiques aux applications. Les clés qui sont toujours présentes dans un jeton SWT émis par ACS sont affichées dans le tableau suivant.
Clé | Description |
---|---|
Émetteur |
Représentation de l’espace de noms de service ACS qui a émis le jeton. Le modèle de cette valeur est https://< servicenamespace.accesscontrol.windows.net/>. |
Public visé |
La valeur de |
ExpiresOn |
Date à laquelle le jeton expire. |
HMACSHA256 |
Signature HMACSHA256 de toutes les autres paires clé/valeur. Cette paire clé/valeur est toujours la dernière paire clé/valeur dans le jeton. La représentation au format codé des autres paires clé/valeur (y compris les revendications spécifiques à l'application) est signée. |
En plus de ces paires clé/valeur, ACS ajoute une ou plusieurs revendications à un jeton avant l’émission. Ces revendications sont pilotées par la configuration de règle présente dans ACS au moment de la demande de jeton. Toutes ces revendications ont un type et une ou plusieurs valeurs, où le type et les valeurs sont des chaînes. Lorsqu'une revendication contient plusieurs valeurs, les valeurs sont séparées par une virgule (« , »). Les revendications sont codées comme des paires clé/valeur, exactement comme les paires clé/valeur décrites dans le tableau précédent.
Voici un exemple de jeton ACS qui contient des revendications représentées en tant que paires clé/valeur.
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
À l'exception de la paire clé/valeur HMACSHA256, ces paires peuvent être dans n'importe quel ordre. Le jeton ACS suivant équivaut au jeton ACS précédent, à l’exception des signatures qui sont différentes.
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
Le tableau suivant représente le contenu du jeton avec des valeurs décodées d'URL.
Source | Clé : | Valeur encodée d'URL | Valeur décodée d'URL |
---|---|---|---|
Revendications définies par l'utilisateur |
rôle |
Admin%2cUser |
Admin,User |
customerName |
Contoso%20Corporation |
Contoso Corporation |
|
Revendications définies par le système |
Émetteur |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Public visé |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
ExpiresOn |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
Jeton web JSON (JWT)
La prise en charge des jetons web JSON (JWT) a été ajoutée dans la version bêta. Cela signifie que des modifications majeures pourront être ajoutées sans préavis.
L’implémentation ACS du format de jeton JWT suit le brouillon 9 de la spécification JWT. Pour plus d’informations, consultez https://go.microsoft.com/fwlink/?LinkID=253666. De la même manière que les jetons SWT, les jetons JWT utilisent un format compact adapté aux services web REST. Contrairement au format SWT, JWT prend en charge diverses options de signature. ACS prend en charge les signatures symétriques et asymétriques pour les jetons JWT. Les revendications toujours présentes dans les jetons JWT émis par ACS sont indiquées dans le tableau suivant.
Revendication | Type de revendication utilisé pour les jetons JWT | Description |
---|---|---|
Émetteur |
iss |
Représentation de l’espace de noms Access Control qui a émis le jeton. Le modèle de cette valeur est https://< namespace.accesscontrol.windows.net/> |
Public visé |
aud |
Valeur de l'étendue utilisée pour demander le jeton. Cette valeur est utilisée pour identifier le destinataire souhaité du jeton. |
Pas avant |
nbf |
Date avant laquelle le jeton n'est pas valide. |
Expiration |
exp |
Date à laquelle le jeton expire. |
Les algorithmes suivants sont pris en charge pour les jetons JWT :
Identificateur d'algorithme dans l'en-tête JWT | Description |
---|---|
HS256 |
HMAC qui utilise un algorithme de hachage SHA-256. Pour signer JWT avec une clé symétrique . |
RS256 |
HMAC qui utilise un algorithme de hachage SHA-256. À utiliser pour la signature d'un jeton JWT avec une clé asymétrique utilisant un certificat X.509. |
Voici un exemple de jeton JWT :
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
Un jeton JWT est composé de segments délimités par ‘.’. Le tableau suivant montre les segments décodés d'un jeton JWT :
Segment JWT | Valeur |
---|---|
En-tête JWT |
{"typ":"JWT","alg":"HS256"} |
Ensemble de revendications JWT |
{"aud »: »https://contoso.com/relyingparty","iss »: »https://contoso.accesscontrol.windows.net/""nbf »:1336067338,"exp »:1336070938,"nameid »:"clientApp »,"identityprovider »:"contoso.com"} |
Signature |
_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw |
Une seule revendication avec plusieurs valeurs est représentée comme un tableau JSON. Par exemple, si un utilisateur est membre de plusieurs rôles, la revendication de rôle apparaîtra ainsi :
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
Protocoles et jetons ACS
Lorsqu’un jeton SAML 2.0, SAML 1.1, SWT, JWT est émis, ACS utilise différents protocoles standard pour retourner le jeton à une application web ou à un service. ACS prend en charge les combinaisons de format/protocole de jeton suivantes :
ACS peut émettre et retourner des jetons SAML 2.0 sur les protocoles WS-Trust et WS-Federation (en fonction du protocole utilisé dans la demande de jeton).
ACS peut émettre et retourner des jetons SAML 1.1 sur les WS-Federation et les protocoles WS-Trust associés (en fonction du protocole utilisé dans la demande de jeton).
ACS peut émettre et retourner des jetons SWT sur les protocoles WS-Federation, WS-Trust et OAuth WRAP ou OAuth 2.0 (selon le protocole utilisé dans la demande de jeton).
ACS peut émettre des jetons JWT sur les protocoles WS-Federation, WS-Trust et OAuth 2.0 (selon le protocole utilisé dans la demande de jeton).