Modello di programmazione attestazioni WIFWIF Claims Programming Model

Gli sviluppatori ASP.NET e Windows Communication Foundation (WCF) usano in genere le interfacce IIdentity e IPrincipal per lavorare con le informazioni sull'identità dell'utente.ASP.NET and Windows Communication Foundation (WCF) developers ordinarily use the IIdentity and IPrincipal interfaces to work with the user’s identity information. In .NET 4.5 è stato integrato Windows Identity Foundation (WIF), in modo che le attestazioni siano ora sempre presenti per qualsiasi entità di sicurezza, come illustrato nel diagramma seguente:In .NET 4.5, Windows Identity Foundation (WIF) has been integrated such that claims are now always present for any principal as illustrated in the following diagram:

Modello di programmazione attestazioni WIFWIF Claims Programming Model

In .NET 4.5 System.Security.Claims contiene le nuove classi ClaimsPrincipal e ClaimsIdentity (vedere il diagramma precedente).In .NET 4.5, System.Security.Claims contains the new ClaimsPrincipal and ClaimsIdentity classes (see diagram above). Tutte le entità di sicurezza in .NET derivano ora da ClaimsPrincipal.All principals in .NET now derive from ClaimsPrincipal. Tutte le classi di identità predefinite, come FormsIdentity per ASP.NET e WindowsIdentity, derivano ora da ClaimsIdentity.All built-in identity classes, like FormsIdentity for ASP.NET and WindowsIdentity now derive from ClaimsIdentity. Analogamente, tutte le classi di entità di sicurezza predefinite, come GenericPrincipal e WindowsPrincipal, derivano da ClaimsPrincipal.Similarly, all built-in principal classes like GenericPrincipal and WindowsPrincipal derive from ClaimsPrincipal.

Un'attestazione è rappresentata dalla classe Claim.A claim is represented by Claim class. Questa classe ha le proprietà importanti seguenti:This class has the following important properties:

  • Type rappresenta il tipo di attestazione ed è in genere un URI.Type represents the type of claim and is typically a URI. Ad esempio, l'attestazione di indirizzo di posta elettronica è rappresentato come http://schemas.microsoft.com/ws/2008/06/identity/claims/email.For example, the email address claim is represented as http://schemas.microsoft.com/ws/2008/06/identity/claims/email.

  • Value contiene il valore dell'attestazione e viene rappresentato come stringa.Value contains the value of the claim and is represented as a string. Ad esempio, l'indirizzo di posta elettronica può essere rappresentato come "someone@contoso.com".For example, the email address can be represented as "someone@contoso.com".

  • ValueType rappresenta il tipo di valore dell'attestazione ed è in genere un URI.ValueType represents the type of the claim value and is typically a URI. Ad esempio, il tipo di stringa è rappresentato come http://www.w3.org/2001/XMLSchema#string.For example, the string type is represented as http://www.w3.org/2001/XMLSchema#string. Il tipo valore deve essere un oggetto QName in base allo standard XML Schema.The value type must be a QName according to the XML schema. Il valore deve essere nel formato namespace#format per consentire a WIF di restituire un valore QName valido.The value should be of the format namespace#format to enable WIF to output a valid QName value. Se lo spazio dei nomi non è uno spazio dei nomi ben definito, il codice XML generato probabilmente non può essere convalidato dallo schema, perché non ci sarà un file XSD pubblicato per tale spazio dei nomi.If the namespace is not a well-defined namespace, the generated XML probably cannot be schema validated, because there will not be a published XSD file for that namespace. Il tipo valore predefinito è http://www.w3.org/2001/XMLSchema#string.The default value type is http://www.w3.org/2001/XMLSchema#string. Consultare http://www.w3.org/2001/XMLSchema per i tipi di valore noto che è possibile utilizzare in modo sicuro.Please see http://www.w3.org/2001/XMLSchema for well-known value types that you can use safely.

  • Issuer è l'identificatore del servizio token di sicurezza che ha rilasciato l'attestazione.Issuer is the identifier of the security token service (STS) that issued the claim. Può essere rappresentato come URL del servizio token di sicurezza o come nome che rappresenta il servizio token di sicurezza, ad esempio https://sts1.contoso.com/sts.This can be represented as URL of the STS or a name that represents the STS, such as https://sts1.contoso.com/sts.

  • OriginalIssuer è l'identificatore del servizio token di sicurezza che ha originariamente rilasciato l'attestazione, indipendentemente dal numero servizi token di sicurezza nella catena.OriginalIssuer is the identifier of the STS that originally issued the claim, regardless of how many STSs are in the chain. Viene rappresentato semplicemente come Issuer.This is represented just like Issuer.

  • Subject è l'oggetto la cui identità viene esaminata.Subject is the subject whose identity is being examined. Esso contiene una ClaimsIdentity.It contains a ClaimsIdentity.

  • Properties è un dizionario che consente allo sviluppatore di fornire dati specifici dell'applicazione da trasferire insieme alle altre proprietà e può essere usato per la convalida personalizzata.Properties is a dictionary that lets the developer provide application-specific data to be transferred on the wire together with the other properties, and can be used for custom validation.

Delega di identitàIdentity Delegation

Una proprietà importante di ClaimsIdentity è Actor.An important property of ClaimsIdentity is Actor. Questa proprietà consente la delega delle credenziali in un sistema multilivello in cui un livello intermedio funge da client per effettuare le richieste a un servizio back-end.This property enables the delegation of credentials in a multi-tier system in which a middle tier acts as the client to make requests to a back-end service.

Accesso alle attestazioni tramite Thread.CurrentPrincipalAccessing Claims through Thread.CurrentPrincipal

Per accedere al set di attestazioni dell'utente corrente in un'applicazione relying party, usare Thread.CurrentPrincipal.To access the current user’s set of claims in an RP application, use Thread.CurrentPrincipal.

L'esempio di codice seguente mostra l'uso di questo metodo per ottenere un oggetto System.Security.Claims.ClaimsIdentity:The following code sample shows the usage of this method to get a System.Security.Claims.ClaimsIdentity:

ClaimsPrincipal claimsPrincipal = Thread.CurrentPrincipal as ClaimsPrincipal;  

Per altre informazioni, vedere System.Security.Claims.For more information, see System.Security.Claims.

Tipo di attestazione del ruoloRole Claim Type

Parte della configurazione dell'applicazione relying party consiste nel determinare il tipo di attestazione del ruolo.Part of configuring your RP application is to determine what your role claim type should be. Questo tipo di attestazione viene usato da System.Security.Claims.ClaimsPrincipal.IsInRole(System.String).This claim type is used by System.Security.Claims.ClaimsPrincipal.IsInRole(System.String). Il tipo di attestazione predefinito è http://schemas.microsoft.com/ws/2008/06/identity/claims/role.The default claim type is http://schemas.microsoft.com/ws/2008/06/identity/claims/role.

Attestazioni estratte da Windows Identity Foundation da tipi di token diversiClaims Extracted by Windows Identity Foundation from Different Token Types

Per impostazione predefinita, WIF supporta diverse combinazioni di meccanismi di autenticazione.WIF supports several combinations of authentication mechanisms out of the box. La tabella seguente elenca le attestazioni che WIF estrae da tipi di token diversi.The following table lists the claims that WIF extracts from different token types.

Tipo di tokenToken Type Attestazione generataClaim Generated Mapping con il token di accesso di WindowsMap To Windows Access Token
SAML 1.1SAML 1.1 1. Tutte le attestazioni da System.IdentityModel.SecurityTokenService.GetOutputClaimsIdentity(System.Security.Claims.ClaimsPrincipal,System.IdentityModel.Protocols.WSTrust.RequestSecurityToken,System.IdentityModel.Scope).1. All claims from System.IdentityModel.SecurityTokenService.GetOutputClaimsIdentity(System.Security.Claims.ClaimsPrincipal,System.IdentityModel.Protocols.WSTrust.RequestSecurityToken,System.IdentityModel.Scope).
2. Attestazione http://schemas.microsoft.com/ws/2008/06/identity/claims/confirmationkey che contiene la serializzazione XML della chiave di conferma, se il token contiene un token di prova.2. The http://schemas.microsoft.com/ws/2008/06/identity/claims/confirmationkey claim that contains the XML serialization of the confirmation key, if the token contains a proof token.
3. Attestazione http://schemas.microsoft.com/ws/2008/06/identity/claims/samlissuername dall'elemento Issuer.3. The http://schemas.microsoft.com/ws/2008/06/identity/claims/samlissuername claim from the Issuer element.
4. Attestazioni AuthenticationMethod AuthenticationInstant, se il token contiene un'istruzione di autenticazione.4. AuthenticationMethod and AuthenticationInstant claims, if the token contains an authentication statement.
Oltre alle attestazioni elencate in "SAML 1.1", ad eccezione delle attestazioni di tipo http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, verranno aggiunte le attestazioni correlate all'autenticazione di Windows e l'identità verrà rappresentata da WindowsClaimsIdentity.In addition to the claims listed in "SAML 1.1", except claims of type http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, Windows authentication related claims will be added and the identity will be represented by WindowsClaimsIdentity.
SAML 2.0SAML 2.0 Uguale a "SAML 1.1".Same as "SAML 1.1". Uguale a "SAML 1.1 con mapping all'account Windows".Same as "SAML 1.1 Mapped to Windows Account".
X509X509 1. Attestazioni con nome distinto X500, emailName, dnsName, SimpleName, UpnName, UrlName, thumbprint, RsaKey (che è possibile estrarre usando il metodo RSACryptoServiceProvider.ExportParameters della proprietà X509Certificate2.PublicKey.Key), DsaKey (che è possibile estrarre usando il metodo DSACryptoServiceProvider.ExportParameters della proprietà X509Certificate2.PublicKey.Key), proprietà SerialNumber del certificato X509.1. Claims with the X500 distinguished name, emailName, dnsName, SimpleName, UpnName, UrlName, thumbprint, RsaKey (this can be extracted using the RSACryptoServiceProvider.ExportParameters method from the X509Certificate2.PublicKey.Key property), DsaKey (this can be extracted using the DSACryptoServiceProvider.ExportParameters method from the X509Certificate2.PublicKey.Key property), SerialNumber properties from the X509 Certificate.
2. Attestazione AuthenticationMethod con valore http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/x509.2. AuthenticationMethod claim with value http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/x509. Attestazione AuthenticationInstant con il valore del momento in cui il certificato è stato convalidato, nel formato DateTime XmlSchema.AuthenticationInstant claim with the value of the time when the certificate was validated in XmlSchema DateTime format.
1. Usa il nome di dominio completo dell'account di Windows come valore dell'attestazione http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name.1. It uses the Windows account fully qualified domain name as the http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name claim value. ..
2. Attestazioni del certificato X509 non mappate a Windows e attestazioni dell'account Windows ottenute dal mapping del certificato a Windows.2. Claims from the X509 Certificate not mapped to Windows, and claims from the windows account obtained by mapping the certificate to Windows.
UPNUPN 1. Le attestazioni sono simili alle attestazioni nella sezione di autenticazione di Windows.1. Claims are similar to the claims in the Windows authentication section.
2. Attestazione AuthenticationMethod con valore http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password.2. AuthenticationMethod claim with value http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password. Attestazione AuthenticationInstant con il valore del momento in cui la password è stata convalidata, nel formato DateTime XmlSchema.The AuthenticationInstant claim with the value of the time when the password was validated in XmlSchema DateTime format.
Windows (Kerberos o NTLM)Windows (Kerberos or NTLM) 1. Attestazioni generate dal token di accesso, ad esempio: PrimarySID, DenyOnlyPrimarySID, PrimaryGroupSID, DenyOnlyPrimaryGroupSID, GroupSID, DenyOnlySID e Name1. Claims generated from the access token such as: PrimarySID, DenyOnlyPrimarySID, PrimaryGroupSID, DenyOnlyPrimaryGroupSID, GroupSID, DenyOnlySID, and Name
2. AuthenticationMethod con valore http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows.2. AuthenticationMethod with the value http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows. AuthenticationInstant con il valore del momento in cui il token di accesso di Windows è stato creato, nel formato DateTime XMLSchema.AuthenticationInstant with the value of the time when the Windows access token was created in the XMLSchema DateTime format.
Coppia di chiavi RSARSA Key Pair 1. Attestazione http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa con il valore di RSAKeyValue.1. The http://schemas.xmlsoap.org/ws/2005/05/identity/claims/rsa claim with the value of RSAKeyValue.
2. Attestazione AuthenticationMethod con valore http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/signature.2. AuthenticationMethod claim with the value http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/signature. Attestazione AuthenticationInstant con il valore del momento in cui la chiave RSA è stata convalidata (ovvero la firma è stata verificata), nel formato DateTime XMLSchema.AuthenticationInstant claim with the value of the time when the RSA key was authenticated (that is, the signature was verified) in the XMLSchema DateTime format.
Tipo di autenticazioneAuthentication Type URI emesso nell'attestazione "AuthenticationMethod"URI emitted in "AuthenticationMethod" claim
PasswordPassword urn:oasis:names:tc:SAML:1.0:am:password
KerberosKerberos urn:ietf:rfc:1510
SecureRemotePasswordSecureRemotePassword urn:ietf:rfc:2945
TLSClientTLSClient urn:ietf:rfc:2246
X509X509 urn:oasis:names:tc:SAML:1.0:am:X509-PKI
PGPPGP urn:oasis:names:tc:SAML:1.0:am:PGP
SpkiSpki urn:oasis:names:tc:SAML:1.0:am:SPKI
XmlDSigXmlDSig urn:ietf:rfc:3075
Non specificatoUnspecified urn:oasis:names:tc:SAML:1.0:am:unspecified