Bagikan melalui


ClaimTypes Kelas

Definisi

Mewakili jenis klaim yang telah ditentukan sebelumnya yang dapat diklaim entitas. Kelas ini tidak dapat diwariskan.

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

Contoh


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

Keterangan

ClaimTypes Gunakan kelas untuk mencari jenis klaim tertentu dalam ClaimSet atau untuk membuat klaim. Untuk mencari jenis klaim tertentu dalam ClaimSet, gunakan FindClaims(String, String) metode dan gunakan properti kelas ini untuk menentukan jenis klaim untuk claimType parameter . Ketika konstruktor untuk Claim kelas digunakan untuk membuat klaim baru, gunakan properti ClaimTypes kelas untuk menentukan claimType parameter . Untuk banyak jenis klaim, Claim kelas memiliki properti statis yang mengembalikan klaim jenis tertentu. Misalnya, CreateHashClaim(Byte[]) metode mengembalikan klaim menggunakan Hash jenis klaim .

Properti

Anonymous

Mendapatkan URI untuk klaim yang menentukan pengguna anonim.

Authentication

Mendapatkan URI untuk klaim yang menentukan detail tentang apakah identitas diautentikasi.

AuthorizationDecision

Mendapatkan URI untuk klaim yang menentukan keputusan otorisasi pada entitas.

Country

Mendapatkan URI untuk klaim yang menentukan negara/wilayah tempat entitas berada.

DateOfBirth

Mendapatkan URI untuk klaim yang menentukan tanggal lahir entitas.

DenyOnlySid

Mendapatkan URI untuk klaim yang menentukan pengidentifikasi keamanan (SID) khusus tolak untuk entitas.

Dns

Mendapatkan URI untuk klaim yang menentukan nama DNS yang terkait dengan nama komputer atau dengan nama alternatif subjek atau penerbit sertifikat X.509.

Email

Mendapatkan URI untuk klaim yang menentukan alamat email entitas.

Gender

Mendapatkan URI untuk klaim yang menentukan jenis kelamin entitas.

GivenName

Mendapatkan URI untuk klaim yang menentukan nama entitas yang diberikan.

Hash

Mendapatkan URI untuk klaim yang menentukan nilai hash.

HomePhone

Mendapatkan URI untuk klaim yang menentukan nomor telepon rumah entitas.

Locality

Mendapatkan URI untuk klaim yang menentukan lokal tempat entitas berada.

MobilePhone

Mendapatkan URI untuk klaim yang menentukan nomor ponsel entitas.

Name

Mendapatkan URI untuk klaim yang menentukan nama entitas.

NameIdentifier

Mendapatkan URI untuk klaim yang menentukan nama entitas.

OtherPhone

Mendapatkan URI untuk klaim yang menentukan nomor telepon alternatif entitas.

PostalCode

Mendapatkan URI untuk klaim yang menentukan kode pos entitas.

PPID

Mendapatkan URI untuk klaim yang menentukan pengidentifikasi pribadi privat (PPI) entitas.

Rsa

Mendapatkan URI untuk klaim yang menentukan kunci RSA.

Sid

Mendapatkan URI untuk klaim yang menentukan pengidentifikasi keamanan (SID).

Spn

Mendapatkan URI untuk klaim yang menentukan klaim nama prinsipal layanan (SPN).

StateOrProvince

Mendapatkan URI untuk klaim yang menentukan negara bagian atau provinsi tempat entitas berada.

StreetAddress

Mendapatkan URI untuk klaim yang menentukan alamat jalan entitas.

Surname

Mendapatkan URI untuk klaim yang menentukan nama keluarga entitas.

System

Mendapatkan URI untuk klaim yang mengidentifikasi entitas sistem.

Thumbprint

Mendapatkan URI untuk klaim yang menentukan thumbprint.

Upn

Mendapatkan URI untuk klaim yang menentukan nama prinsipal pengguna (UPN).

Uri

Mendapatkan URI untuk klaim yang menentukan URI.

Webpage

Mendapatkan URI untuk klaim yang menentukan halaman Web entitas.

X500DistinguishedName

Mendapatkan string yang berisi URI untuk klaim nama khusus dari sertifikat X.509.

Berlaku untuk