ClaimTypes Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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. |
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk