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 applies_to usato per richiedere il token. Questo valore può essere un URI HTTP o HTTPS.

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.

Vedere anche

Concetti

Architettura di ACS
Componenti di ACS 2.0