Claims and Tokens
This topic describes the various claim types that Windows Communication Foundation (WCF) creates from the default tokens that it supports.
You can examine the claims of a client credential by using the ClaimSet and Claim classes. The ClaimSet
contains a collection of Claim
objects. Each Claim
has the following important members:
The ClaimType property returns a Uniform Resource Identifier (URI) that specifies the type of claim being made. For example, a claim type may be a thumbprint of a certificate, in which case the URI is
http://schemas.microsoft.com/ws/20005/05/identity/claims/thumprint
.The Right property returns a URI that specifies the right of the claim. Predefined rights are found in the Rights class (Identity, PossessProperty).
The Resource property returns the resource associated with the claim.
Each ClaimSet also has an Issuer property, which represents the ClaimSet of the Issuer
.
Windows Accounts
Where a client credential maps to a Windows user account, the resulting ClaimSet has the following values:
The
Issuer
is the value returned by the static Windows property of the ClaimSet class.The claims in the collection are:
A Claim with a ClaimType value of security identifier (SID), a Right property value of
Identity
, and a Resource that returns the actual SID value. A SID is a unique value the domain controller issues to every user. The SID is used to identify the user in interactions with Windows security.A Claim with a ClaimType value of SID, a Right of
PossessProperty
, and a Resource of the SID value.A Claim with a ClaimType of Name, a Right of
PossessProperty
and a Resource of string containing the user name (for example, "MYMACHINE\Bob").Additional SID claims with PossessProperty for the various groups the user belongs to.
Certificates
Where the client credential is a certificate, the resulting ClaimSet has the following values:
For self-issued certificates, the
Issuer
is the ClaimSet itself. The ClaimSet returns a ClaimType of Thumbprint, a Right ofIdentity
, and a Resource value that is a Byte array containing the thumbprint of the certificate.For a certificate issued by a certification authority, the issuer is the
ClaimSet
representing the certification authority’s certificate.The
Claims
in the collection include:A
Claim
with aClaimType
of Thumbprint, aRight
of PossessProperty, and aResource
that is a byte array containing the thumbprint of the certificateAdditional PossessProperty claims of various types, including X500DistinguishedName, Dns, Name, Upn, and Rsa, represent various properties of the certificate. The resource for the Rsa claim is the public key associated with the certificate.Note Where the client credential type is a certificate that the service maps to a Windows account, two
ClaimSet
objects are generated. The first contains all the claims related to the Windows account and the second contains all the claims related to the certificate.
User Name/Password
Where the client credential is a user name/password (or equivalent) that does not map to a Windows account, the resulting ClaimSet
is issued by the static System property of the ClaimSet
class. The ClaimSet
contains an Identity
claim of type Name whose resource is the user name the client provides. A corresponding claim has a Right
of PossessProperty
.
RSA Keys
Where an RSA key not associated with a certificate is used, the resulting ClaimSet
is self-issued and contains an Identity
claim of type Rsa whose resource is the RSA key. A corresponding claim has a Right
of PossessProperty
.
SAML
Where the client authenticates with a Security Assertions Markup Language (SAML) token, the resulting ClaimSet
is issued by the entity that signed the SAML token, often the certificate of the security token service (STS) that issued the SAML token. The ClaimSet
contains various claims as found in the SAML token. If the SAML token contains a SamlSubject
with a non-null
name, then an Identity
claim with a type of NameIdentifier and a resource type of SamlNameIdentifierClaimResource are created.
Identity Claims and ServiceSecurityContext.IsAnonymous
If none of the ClaimSet
objects resulting from the client credentials contain a claim with a Right
of Identity
, then the IsAnonymous property returns true
. If one or more such claims are present, the IsAnonymous
property returns false
.