ClaimTypes Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет заранее определенные типы утверждений, которые может предъявить сущность. Этот класс не наследуется.
public ref class ClaimTypes abstract sealed
public static class ClaimTypes
type ClaimTypes = class
Public Class ClaimTypes
- Наследование
-
ClaimTypes
Примеры
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
Комментарии
Используйте класс ClaimTypes для поиска утверждений заданного типа в наборе ClaimSet и для создания утверждений. Для поиска определенного утверждения в наборе ClaimSet используйте метод FindClaims(String, String), а свойства этого класса — для указания типа утверждения для параметра claimType
. При создании нового утверждения с помощью конструктора Claim используйте свойства класса ClaimTypes, чтобы указать параметр claimType
. Для многих типов утверждений класс Claim имеет статические свойства, возвращающие утверждение заданного типа. Например, метод CreateHashClaim(Byte[]) возвращает утверждение, использующее тип утверждения Hash.
Свойства
Anonymous |
Возвращает URI для утверждения с указанием анонимного пользователя. |
Authentication |
Возвращает URI для утверждения с указанием о том, прошла ли сущность проверку подлинности. |
AuthorizationDecision |
Возвращает URI для утверждения с указанием решения об авторизации сущности. |
Country |
Возвращает URI для утверждения с указанием страны или региона, где находится сущность. |
DateOfBirth |
Возвращает URI для утверждения с указанием даты рождения сущности. |
DenyOnlySid |
Возвращает URI для утверждения с указанием идентификатора безопасности (SID) "только запрет" для сущности. |
Dns |
Возвращает URI для утверждения с указанием DNS-имени, связанного с именем компьютера или с альтернативным именем субъекта или издателя сертификата X.509. |
Возвращает URI для утверждения с указанием адреса электронной почты сущности. |
|
Gender |
Возвращает URI для утверждения с указанием пола сущности. |
GivenName |
Возвращает URI для утверждения с указанием имени сущности. |
Hash |
Возвращает URI для утверждения с указанием значения хэша. |
HomePhone |
Возвращает URI для утверждения с указанием номера домашнего телефона сущности. |
Locality |
Возвращает URI для утверждения с указанием языкового стандарта по месту нахождения сущности. |
MobilePhone |
Возвращает URI для утверждения с указанием номера мобильного телефона сущности. |
Name |
Возвращает URI для утверждения с указанием имени сущности. |
NameIdentifier |
Возвращает URI для утверждения с указанием имени сущности. |
OtherPhone |
Возвращает URI для утверждения с указанием альтернативного номера телефона сущности. |
PostalCode |
Возвращает URI для утверждения с указанием почтового индекса сущности. |
PPID |
Возвращает URI для утверждения с указанием частного личного идентификатора (PPI) сущности. |
Rsa |
Возвращает URI для утверждения с указанием ключа RSA. |
Sid |
Возвращает URI для утверждения с указанием идентификатора безопасности (SID). |
Spn |
Возвращает URI для утверждения с указанием имени субъекта-службы (SPN). |
StateOrProvince |
Возвращает URI для утверждения с указанием штата или провинции, где находится сущность. |
StreetAddress |
Возвращает URI для утверждения с указанием почтового адреса сущности. |
Surname |
Возвращает URI для утверждения с указанием фамилии сущности. |
System |
Возвращает URI для утверждения с указанием системной сущности. |
Thumbprint |
Возвращает URI для утверждения с указанием отпечатка. |
Upn |
Возвращает URI для утверждения с указанием имени участника-пользователя (UPN). |
Uri |
Возвращает URI для утверждения с указанием URI. |
Webpage |
Возвращает URI для утверждения с указанием веб-страницы сущности. |
X500DistinguishedName |
Возвращает строку, содержащую URI для утверждения с различающимся именем сертификата X.509. |