Formati di token supportati in ACS
Aggiornamento: 19 giugno 2015
Si applica a: Azure
Quando le applicazioni Web e i servizi gestiscono l'autenticazione con Microsoft Azure Active Directory Controllo di accesso (noto anche come servizio Controllo di accesso o ACS), il client deve ottenere un token di sicurezza emesso da ACS per accedere all'applicazione o al servizio. ACS può emettere token di sicurezza nei formati seguenti:
SAML (Security Assertion Markup Language) 1.1 e 2.0
Token Web semplice (SWT)
Token Web JSON (JWT)
Nota
ACS può emettere token di sicurezza in uno dei formati seguenti. Il formato di token usato da ACS per un'applicazione Web o un servizio è determinato dalla configurazione dell'applicazione relying party. Per informazioni sulla configurazione delle applicazioni relying party, vedere Relying Party Applications.For information about configuring relying party applications, see Relying Party Applications.
SAML (Security Assertion Markup Language) 1.1 e 2.0
SAML (Security Assertion Markup Language) è il formato di token più vecchio e oggi più comunemente usato per l'identità basata su attestazioni e SSO (Single Sign-On). SAML specifica un formato XML, valido sia per token che per protocolli, per l'esecuzione di SSO a un servizio o un'applicazione Web mediante token SAML. Per altre informazioni sui token SAML, vedere Specifiche SAML (https://go.microsoft.com/fwlink/?LinkID=213719).
Nota
I token SAML 1.1 e SAML 2.0 sono ampiamente supportati da numerose piattaforme di sviluppo, tra cui Windows Identity Foundation (https://go.microsoft.com/fwlink/?LinkID=213729).
Di seguito è riportato un esempio di token 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>
Token Web semplice (SWT)
I token SWT (Simple Web Token) sono conformi alla specifica SimpleWebToken. I token SWT sono espressi come coppie chiave/valore codificate come form firmate con una chiave di crittografia. La specifica impone la presenza di alcune coppie chiave/valore, ma lascia libertà riguardo alle coppie chiave/valore specifiche dell'applicazione. Le chiavi sempre presenti in un token SWT rilasciato da ACS sono illustrate nella tabella seguente.
Chiave | Descrizione |
---|---|
Issuer |
Rappresentazione dello spazio dei nomi del servizio ACS che ha emesso il token. Il modello per questo valore è https://< servicenamespace.accesscontrol.windows.net/>. |
Destinatari |
Il valore di |
ExpiresOn |
Il valore Epoch in cui scade il token. |
HMACSHA256 |
La firma HMACSHA256 di tutte le altre coppie chiave/valore. Questa coppia chiave/valore è sempre l'ultima nel token. La rappresentazione codificata come form delle altre coppie chiave/valore, incluse le attestazioni specifiche dell'applicazione, viene firmata. |
Oltre a queste coppie chiave/valore, ACS aggiunge una o più attestazioni a un token prima del rilascio. Queste attestazioni sono guidate dalla configurazione della regola presente in ACS al momento della richiesta di token. Tutte queste attestazioni dispongono di un tipo e uno o più valori, entrambi (tipo e valori) di tipo stringa. Se un'attestazione contiene più valori, questi ultimi sono separati da una virgola (","). Le attestazioni sono codificate come coppie chiave/valore, esattamente come le coppie chiave/valore descritte nella tabella precedente.
Di seguito è riportato un esempio di token ACS che contiene attestazioni rappresentate come coppie chiave/valore.
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
Fatta eccezione per HMACSHA256, le coppie chiave/valore possono essere specificate in qualsiasi ordine. Il token ACS seguente equivale al token ACS precedente, ad eccezione delle firme diverse.
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
La seguente tabella indica il contenuto del token con valori decodificati come URL.
Origine | Chiave | Valore codificato come URL | Valore decodificato come URL |
---|---|---|---|
Attestazioni definite dall'utente |
ruolo |
Admin%2cUser |
Admin,User |
customerName |
Contoso%20Corporation |
Contoso Corporation |
|
Attestazioni definite dal sistema |
Issuer |
https%3a%2f%2fmyservice.accesscontrol.windows.net%2f |
https://myservice.accesscontrol.windows.net/ |
Destinatari |
http%3a%2f%2flocalhost%2fmyservice |
https://localhost/myservice |
|
ExpiresOn |
1255912922 |
1255912922 |
|
HMACSHA256 |
yuVO%2fwc58%2ftYP36%2fDM1mS%2fHr0hswpsGTWwgfvAbpL64%3d |
yuVO/wc58/tYP36/DM1mS/Hr0hswpsGTWwgfvAbpL64= |
Token Web JSON (JWT)
Il supporto per il token Web JSON (JWT) viene aggiunto nella versione Beta, è quindi possibile che vengano apportate modifiche di rilievo senza preavviso.
L'implementazione ACS del formato del token JWT segue la bozza 9 della specifica JWT. Per altre informazioni, vedere https://go.microsoft.com/fwlink/?LinkID=253666. In modo analogo ai token SWT, JWT indica un formato di token compatto adatto ai servizi Web REST. A differenza del formato SWT, JWT supporta un'ampia gamma di opzioni di firma. ACS supporta sia firme simmetriche che asimmetriche per i token JWT. Le attestazioni sempre presenti nei token JWT rilasciati da ACS sono illustrate nella tabella seguente.
Attestazione | Tipo di attestazione usato JWT | Descrizione |
---|---|---|
Issuer |
iss |
Rappresentazione dello spazio dei nomi Controllo di accesso che ha emesso il token. Il modello per questo valore è https://< namespace.accesscontrol.windows.net/> |
Destinatari |
aud |
Il valore dell'ambito usato per richiedere il token. Questo valore viene usato per identificare il destinatario desiderato del token. |
Non prima |
nbf |
Il valore Epoch prima del quale il token non è valido. |
Scadenza |
exp |
Il valore Epoch in cui scade il token. |
Per i token JWT sono supportati i seguenti algoritmi:
Identificatore algoritmo nell'intestazione JWT | Descrizione |
---|---|
HS256 |
HMAC che usa l'algoritmo hash SHA-256. Per firmare JWT con una chiave simmetrica. |
RS256 |
RSA che usa l'algoritmo hash SHA-256. Per la firma di JWT con una chiave asimmetrica, mediante uno standard x509 con certificato. |
Di seguito è riportato un esempio di un token JWT:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJodHRwczovL2NvbnRvc28uY29tL3JlbHlpbmdwYXJ0eSIsImlzcyI6Imh0dHBzOi8vY29udG9zby5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0LyIsIm5iZiI6MTMzNjA2NzMzOCwiZXhwIjoxMzM2MDcwOTM4LCJuYW1laWQiOiJjbGllbnRBcHAiLCJpZGVudGl0eXByb3ZpZGVyIjoiY29udG9zby5jb20ifQ._3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw.
Il token JWT è costituito da segmenti delimitati dal punto ('.'). La seguente tabella contiene i segmenti decodificati di un token JWT:
Segmento JWT | Valore |
---|---|
Intestazione JWT |
{"typ":"JWT","alg":"HS256"} |
Set di attestazioni JWT |
{"aud":https://contoso.com/relyingparty"";"iss":";"nbf":1336067338,"exp":1336070938,"nameid":https://contoso.accesscontrol.windows.net/""clientApp","identityprovider":"contoso.com"} |
Firma |
_3dZQ6cmmFgrZ_-VmOLrr7CHne3Xdko_WtE6-Je5Ihw |
Una singola attestazione con più valori viene rappresentata come matrice JSON. Se ad esempio un utente è membro di più ruoli, l'attestazione del ruolo viene visualizzata nel modo seguente:
{
"aud":"https://contoso.com/relyingparty",
"iss":"https://contoso.accesscontrol.windows.net/",
"nbf":1336067338,"exp":1336070938,
"nameid":"frankm",
"identityprovider":"contoso.com",
“role”: [ “admin”, “user” ]
}
Protocolli e token ACS
Quando viene rilasciato un token SAML 2.0, SAML 1.1, SWT, JWT, ACS usa vari protocolli standard per restituire il token a un'applicazione Web o a un servizio. ACS supporta le combinazioni di formato/protocollo token seguenti:
ACS può emettere e restituire token SAML 2.0 sui protocolli di WS-Trust e WS-Federation (a seconda del protocollo usato nella richiesta di token).
ACS può rilasciare e restituire token SAML 1.1 sui WS-Federation e sui protocolli di WS-Trust correlati (a seconda del protocollo usato nella richiesta di token).
ACS può emettere e restituire token SWT tramite i protocolli WS-Federation, WS-Trust e OAuth WRAPPING o OAuth 2.0, a seconda del protocollo usato nella richiesta di token.
ACS può inviare token JWT sui protocolli WS-Federation, WS-Trust e OAuth 2.0, a seconda del protocollo usato nella richiesta di token.