Attestazioni e token SAML
I token SAML (Security Assertions Markup Language) sono rappresentazioni XML di attestazioni. Per impostazione predefinita, i token SAML usati da Windows Communication Foundation (WCF) negli scenari di sicurezza federati sono token emessi.
I token SAML contengono istruzioni che si configurano come attestazioni elaborate da un'entità su un'altra entità. Negli scenari di sicurezza federati, ad esempio, le istruzioni sono elaborate da un servizio token di sicurezza su un utente del sistema. Il servizio token di sicurezza firma il token SAML per indicare la veridicità delle istruzioni contenute nel token. Il token SAML, inoltre, è associato a chiavi crittografiche di cui l'utente del token SAML dimostra di essere a conoscenza. La prova dimostra al componente che il token SAML è stato, infatti, rilasciato a quell'utente. In uno scenario tipico, ad esempio:
Un client chiede un token SAML a un servizio token di sicurezza, autenticandosi al servizio mediante le credenziali di Windows.
Il servizio token di sicurezza rilascia un token SAML al cliente. Il token SAML viene firmato con un certificato associato al servizio token di sicurezza e contiene una chiave di prova crittografata per il servizio di destinazione.
Il client riceve inoltre una copia della chiave di prova. Il client presenta quindi il token SAML al servizio dell'applicazione (il componente) e firma il messaggio con tale chiave di prova.
La firma sul token SAML dimostra al componente che il servizio token di sicurezza ha rilasciato il token. La firma del messaggio creata con la chiave di prova dimostra al componente che il token è stato rilasciato al client.
Da attestazioni a SamlAttributes
In WCF le istruzioni contenute nei token SAML sono modellate come oggetti SamlAttribute che possono essere popolati direttamente da oggetti Claim purché l'oggetto Claim disponga di una proprietà Right di PossessProperty e la proprietà Resource sia di tipo String. Ad esempio:
Claim myClaim = new Claim(
ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)
Nota
Quando i token SAML vengono serializzati nei messaggi, quando sono rilasciati da un servizio token di sicurezza o quando sono presentati dai client ai servizi nell'ambito dell'autenticazione, la quota della dimensione massima del messaggio deve essere sufficientemente grande da contenere il token SAML e le altre parti del messaggio. Normalmente la quota della dimensione predefinita del messaggio è sufficiente. È tuttavia possibile, nei casi in cui un token SAML sia di grandi dimensioni perché contiene centinaia di attestazioni, che risulti necessario aumentare le quote per contenere il token serializzato. Per altre informazioni, vedere Considerazioni sulla sicurezza per i dati.
Da SamlAttributes ad attestazioni
Quando i token SAML vengono ricevuti nei messaggi, le varie istruzioni contenute nel token SAML vengono trasformate in oggetti IAuthorizationPolicy inseriti in AuthorizationContext. Le attestazioni di ogni istruzione SAML sono restituite dalla proprietà ClaimSets di AuthorizationContext e possono essere esaminate per determinare se autenticare e autorizzare l'utente.
Vedi anche
- AuthorizationContext
- IAuthorizationPolicy
- ClaimSet
- Federazione
- Procedura: Creare un client federato
- Procedura: Configurare le credenziali in un servizio federativo
- Gestione delle attestazioni e dell'autorizzazione con il modello di identità
- Attestazioni e token
- Creazione di attestazioni e valori delle risorse
- Procedura: Creare un'attestazione personalizzata