ClaimTypes Klas

Definitie

Vertegenwoordigt de vooraf gedefinieerde typen claims die een entiteit kan claimen. Deze klasse kan niet worden overgenomen.

public ref class ClaimTypes abstract sealed
public static class ClaimTypes
type ClaimTypes = class
Public Class ClaimTypes
Overname
ClaimTypes

Voorbeelden


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

Opmerkingen

Gebruik de ClaimTypes klasse om te zoeken naar een bepaald type claim in een ClaimSet of om een claim te maken. Als u wilt zoeken naar een bepaald type claim in een ClaimSet, gebruikt u de FindClaims(String, String) methode en gebruikt u de eigenschappen van deze klasse om het claimtype voor de claimType parameter op te geven. Wanneer de constructor voor de Claim klasse wordt gebruikt om een nieuwe claim te maken, gebruikt u de eigenschappen van de ClaimTypes klasse om de claimType parameter op te geven. Voor veel van de claimtypen heeft de Claim klasse statische eigenschappen die een claim van een specifiek type retourneren. De methode retourneert bijvoorbeeld CreateHashClaim(Byte[]) een claim met behulp van het Hash claimtype.

Eigenschappen

Name Description
Anonymous

Hiermee haalt u de URI op voor een claim waarmee de anonieme gebruiker wordt opgegeven.

Authentication

Haalt de URI op voor een claim die details opgeeft over of een identiteit is geverifieerd.

AuthorizationDecision

Hiermee haalt u de URI op voor een claim waarmee een autorisatiebeslissing voor een entiteit wordt opgegeven.

Country

Hiermee haalt u de URI op voor een claim die het land/de regio aangeeft waarin een entiteit zich bevindt.

DateOfBirth

Hiermee haalt u de URI op voor een claim die de geboortedatum van een entiteit aangeeft.

DenyOnlySid

Hiermee haalt u de URI op voor een claim die een beveiligings-id (SID) voor alleen weigeren voor een entiteit opgeeft.

Dns

Hiermee haalt u de URI op voor een claim die de DNS-naam opgeeft die is gekoppeld aan de computernaam of met de alternatieve naam van het onderwerp of de verlener van een X.509-certificaat.

Email

Hiermee haalt u de URI op voor een claim waarmee het e-mailadres van een entiteit wordt opgegeven.

Gender

Hiermee haalt u de URI op voor een claim die het geslacht van een entiteit aangeeft.

GivenName

Haalt de URI op voor een claim die de opgegeven naam van een entiteit aangeeft.

Hash

Hiermee haalt u de URI op voor een claim die een hash-waarde opgeeft.

HomePhone

Hiermee haalt u de URI op voor een claim die het telefoonnummer voor thuisgebruik van een entiteit aangeeft.

Locality

Hiermee haalt u de URI op voor een claim die de landinstelling opgeeft waarin een entiteit zich bevindt.

MobilePhone

Hiermee haalt u de URI op voor een claim waarmee het mobiele telefoonnummer van een entiteit wordt opgegeven.

Name

Hiermee haalt u de URI op voor een claim die de naam van een entiteit aangeeft.

NameIdentifier

Hiermee haalt u de URI op voor een claim die de naam van een entiteit aangeeft.

OtherPhone

Hiermee haalt u de URI op voor een claim waarmee het alternatieve telefoonnummer van een entiteit wordt opgegeven.

PostalCode

Hiermee haalt u de URI op voor een claim die de postcode van een entiteit aangeeft.

PPID

Hiermee haalt u de URI op voor een claim die de persoonlijke id (PPI) van een entiteit aangeeft.

Rsa

Hiermee haalt u de URI op voor een claim die een RSA-sleutel opgeeft.

Sid

Hiermee haalt u de URI op voor een claim die een beveiligings-id (SID) opgeeft.

Spn

Hiermee haalt u de URI op voor een claim die een SPN-claim (Service Principal Name) opgeeft.

StateOrProvince

Hiermee haalt u de URI op voor een claim waarmee de staat of provincie wordt opgegeven waarin een entiteit zich bevindt.

StreetAddress

Hiermee haalt u de URI op voor een claim waarmee het adres van een entiteit wordt opgegeven.

Surname

Haalt de URI op voor een claim die de achternaam van een entiteit aangeeft.

System

Haalt de URI op voor een claim die de systeementiteit identificeert.

Thumbprint

Hiermee haalt u de URI op voor een claim die een vingerafdruk opgeeft.

Upn

Hiermee haalt u de URI op voor een claim die een UPN (User Principal Name) opgeeft.

Uri

Hiermee haalt u de URI op voor een claim die een URI opgeeft.

Webpage

Hiermee haalt u de URI op voor een claim die de webpagina van een entiteit aangeeft.

X500DistinguishedName

Hiermee haalt u de tekenreeks op die de URI bevat voor een DN-naamclaim van een X.509-certificaat.

Van toepassing op