ClaimTypes Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar de fördefinierade typer av anspråk som en entitet kan göra anspråk på. Det går inte att ärva den här klassen.
public ref class ClaimTypes abstract sealed
public static class ClaimTypes
type ClaimTypes = class
Public Class ClaimTypes
- Arv
-
ClaimTypes
Exempel
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.IdentityModel.Tokens;
using System.IdentityModel.Selectors;
using System.ServiceModel;
namespace Microsoft.ServiceModel.Samples.SupportingTokens
{
[ServiceContract]
public interface IEchoService : IDisposable
{
[OperationContract]
string Echo();
}
// Service class that implements the service contract.
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class EchoService : IEchoService
{
public string Echo()
{
string userName;
string certificateSubjectName;
GetCallerIdentities(OperationContext.Current.ServiceSecurityContext, out userName, out certificateSubjectName);
return String.Format("Hello {0}, {1}", userName, certificateSubjectName);
}
public void Dispose()
{
}
bool TryGetClaimValue<TClaimResource>(ClaimSet claimSet, string claimType, out TClaimResource resourceValue)
where TClaimResource : class
{
resourceValue = default(TClaimResource);
IEnumerable<Claim> matchingClaims = claimSet.FindClaims(claimType, Rights.PossessProperty);
if (matchingClaims == null)
return false;
IEnumerator<Claim> enumerator = matchingClaims.GetEnumerator();
if (enumerator.MoveNext())
{
resourceValue = (enumerator.Current.Resource == null) ? null : (enumerator.Current.Resource as TClaimResource);
return true;
}
else
{
return false;
}
}
// Returns the username and certificate subject name provided by the client.
void GetCallerIdentities(ServiceSecurityContext callerSecurityContext, out string userName, out string certificateSubjectName)
{
userName = null;
certificateSubjectName = null;
// Look in all the claimsets in the authorization context.
foreach (ClaimSet claimSet in callerSecurityContext.AuthorizationContext.ClaimSets)
{
// Try to find a Upn claim. This has been generated from the windows username.
string tmpName;
if (TryGetClaimValue<string>(claimSet, ClaimTypes.Upn, out tmpName))
{
userName = tmpName;
}
else
{
// Try to find an X500DistinguishedName claim. This has been generated from the client certificate.
X500DistinguishedName tmpDistinguishedName;
if (TryGetClaimValue<X500DistinguishedName>(claimSet, ClaimTypes.X500DistinguishedName, out tmpDistinguishedName))
{
certificateSubjectName = tmpDistinguishedName.Name;
}
}
}
}
}
}
Imports System.Collections.Generic
Imports System.Security.Cryptography.X509Certificates
Imports System.IdentityModel.Claims
Imports System.IdentityModel.Policy
Imports System.IdentityModel.Tokens
Imports System.IdentityModel.Selectors
Imports System.ServiceModel
' Service class that implements the service contract.
<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _
Public Class EchoService
Implements IEchoService
<ServiceContract()> _
Public Interface IEchoService
: Inherits IDisposable
<OperationContract()> _
Function Echo() As String
End Interface 'IEchoService
Public Function Echo() As String Implements IEchoService.Echo
Dim userName As String = String.Empty
Dim certificateSubjectName As String = String.Empty
GetCallerIdentities(OperationContext.Current.ServiceSecurityContext, userName, certificateSubjectName)
Return String.Format("Hello {0}, {1}", userName, certificateSubjectName)
End Function 'Echo
Public Sub Dispose() Implements IDisposable.Dispose
End Sub
Function TryGetClaimValue(Of TClaimResource)(ByVal claimSet As ClaimSet, ByVal claimType As String, ByRef resourceValue As TClaimResource) As Boolean
Dim matchingClaims As IEnumerable(Of Claim) = claimSet.FindClaims(claimType, Rights.PossessProperty)
If matchingClaims Is Nothing Then
Return False
End If
Dim enumerator As IEnumerator(Of Claim) = matchingClaims.GetEnumerator()
If enumerator.MoveNext() Then
If enumerator.Current.Resource Is Nothing Then
resourceValue = Nothing
Else
resourceValue = CType(enumerator.Current.Resource, TClaimResource)
End If
Return True
Else
Return False
End If
End Function
Sub GetCallerIdentities(ByVal callerSecurityContext As ServiceSecurityContext, ByRef userName As String, ByRef certificateSubjectName As String)
' Returns the username and certificate subject name provided by the client.
userName = Nothing
certificateSubjectName = Nothing
' Look in all the claimsets in the authorization context.
Dim claimSet As ClaimSet
For Each claimSet In callerSecurityContext.AuthorizationContext.ClaimSets
' Try to find a Upn claim. This has been generated from the Windows username.
Dim tmpName As String = String.Empty
If TryGetClaimValue(Of String)(claimSet, ClaimTypes.Upn, tmpName) Then
userName = tmpName
Else
' Try to find an X500DistinguishedName claim. This has been generated from the client certificate.
Dim tmpDistinguishedName As X500DistinguishedName = Nothing
If TryGetClaimValue(Of X500DistinguishedName)(claimSet, ClaimTypes.X500DistinguishedName, tmpDistinguishedName) Then
certificateSubjectName = tmpDistinguishedName.Name
End If
End If
Next claimSet
End Sub
End Class
Kommentarer
ClaimTypes Använd klassen för att söka efter en viss typ av anspråk i en ClaimSet eller för att skapa ett anspråk. Om du vill söka efter en viss typ av anspråk i en ClaimSetanvänder du FindClaims(String, String) metoden och använder egenskaperna för den här klassen för att ange anspråkstypen för parametern claimType . När konstruktorn för Claim klassen används för att skapa ett nytt anspråk använder du egenskaperna ClaimTypes för klassen för att ange parametern claimType . För många av anspråkstyperna Claim har klassen statiska egenskaper som returnerar ett anspråk av en viss typ. Metoden returnerar till exempel CreateHashClaim(Byte[]) ett anspråk med anspråkstypen Hash .
Egenskaper
| Name | Description |
|---|---|
| Anonymous |
Hämtar URI:n för ett anspråk som anger den anonyma användaren. |
| Authentication |
Hämtar URI:n för ett anspråk som anger information om huruvida en identitet autentiseras. |
| AuthorizationDecision |
Hämtar URI:n för ett anspråk som anger ett auktoriseringsbeslut för en entitet. |
| Country |
Hämtar URI:n för ett anspråk som anger det land/den region där en entitet finns. |
| DateOfBirth |
Hämtar URI:n för ett anspråk som anger födelsedatum för en entitet. |
| DenyOnlySid |
Hämtar URI:n för ett anspråk som anger en nekad säkerhetsidentifierare (SID) för en entitet. |
| Dns |
Hämtar URI:n för ett anspråk som anger DNS-namnet som är associerat med datornamnet eller med det alternativa namnet på antingen ämnesnamnet eller utfärdaren av ett X.509-certifikat. |
|
Hämtar URI:n för ett anspråk som anger en entitets e-postadress. |
|
| Gender |
Hämtar URI:n för ett anspråk som anger könet för en entitet. |
| GivenName |
Hämtar URI:n för ett anspråk som anger namnet på en entitet. |
| Hash |
Hämtar URI:n för ett anspråk som anger ett hash-värde. |
| HomePhone |
Hämtar URI:n för ett anspråk som anger hemtelefonnumret för en entitet. |
| Locality |
Hämtar URI:n för ett anspråk som anger det språk som en entitet finns i. |
| MobilePhone |
Hämtar URI:n för ett anspråk som anger mobiltelefonnumret för en entitet. |
| Name |
Hämtar URI:n för ett anspråk som anger namnet på en entitet. |
| NameIdentifier |
Hämtar URI:n för ett anspråk som anger namnet på en entitet. |
| OtherPhone |
Hämtar URI:n för ett anspråk som anger det alternativa telefonnumret för en entitet. |
| PostalCode |
Hämtar URI:n för ett anspråk som anger postnumret för en entitet. |
| PPID |
Hämtar URI:n för ett anspråk som anger den privata personliga identifieraren (PPI) för en entitet. |
| Rsa |
Hämtar URI:n för ett anspråk som anger en RSA-nyckel. |
| Sid |
Hämtar URI:n för ett anspråk som anger en säkerhetsidentifierare (SID). |
| Spn |
Hämtar URI:n för ett anspråk som anger ett SPN-anspråk (Service Principal Name). |
| StateOrProvince |
Hämtar URI:n för ett anspråk som anger den delstat eller provins där en entitet finns. |
| StreetAddress |
Hämtar URI:n för ett anspråk som anger gatuadressen för en entitet. |
| Surname |
Hämtar URI:n för ett anspråk som anger en entitets efternamn. |
| System |
Hämtar URI:n för ett anspråk som identifierar systementiteten. |
| Thumbprint |
Hämtar URI:n för ett anspråk som anger ett tumavtryck. |
| Upn |
Hämtar URI:n för ett anspråk som anger användarens huvudnamn (UPN). |
| Uri |
Hämtar URI:n för ett anspråk som anger en URI. |
| Webpage |
Hämtar URI:n för ett anspråk som anger webbsidan för en entitet. |
| X500DistinguishedName |
Hämtar strängen som innehåller URI:n för ett unikt namnanspråk för ett X.509-certifikat. |