ClaimTypes Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die vordefinierten Typen von Ansprüchen dar, die eine Entität beanspruchen kann. Diese Klasse kann nicht vererbt werden.
public ref class ClaimTypes abstract sealed
public static class ClaimTypes
type ClaimTypes = class
Public Class ClaimTypes
- Vererbung
-
ClaimTypes
Beispiele
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
Hinweise
Mit der ClaimTypes-Klasse können Sie einen bestimmten Anspruchtyp in einem ClaimSet suchen oder einen Anspruch erstellen. Um einen bestimmten Anspruchtyp in einem ClaimSet zu suchen, verwenden Sie die FindClaims(String, String)-Methode. Geben Sie mit den Eigenschaften dieser Klasse den Anspruchtyp für den claimType
-Parameter an. Wenn der Konstruktor für die Claim-Klasse zum Erstellen eines neuen Anspruchs verwendet wird, geben Sie anhand der Eigenschaften der ClaimTypes-Klasse den claimType
-Parameter an. Für viele Anspruchtypen verfügt die Claim-Klasse über statische Eigenschaften, die einen Anspruch für einen bestimmten Typ zurückgeben. Die CreateHashClaim(Byte[])-Methode gibt beispielsweise einen Anspruch mithilfe des Hash-Anspruchtyps zurück.
Eigenschaften
Anonymous |
Ruft den URI für einen Anspruch ab, der den anonymen Benutzer angibt. |
Authentication |
Ruft den URI für einen Anspruch ab, der Details darüber angibt, ob eine Identität authentifiziert wird. |
AuthorizationDecision |
Ruft den URI für einen Anspruch ab, der eine Autorisierungsentscheidung zu einer Entität angibt. |
Country |
Ruft den URI für einen Anspruch ab, der das Land/den Bereich angibt, in dem sich eine Entität befindet. |
DateOfBirth |
Ruft den URI für einen Anspruch ab, der das Geburtsdatum einer Entität angibt. |
DenyOnlySid |
Ruft den URI für einen Anspruch ab, der eine Sicherheits-ID (SID) nur zum Ablehnen für eine Entität angibt. |
Dns |
Ruft den URI für einen Anspruch ab, der den DNS-Namen angibt, der dem Computernamen oder dem alternativen Namen des Antragstellers oder des Ausstellers eines X.509-Zertifikats zugeordnet ist. |
Ruft den URI für einen Anspruch ab, der die E-Mail-Adresse einer Entität angibt. |
|
Gender |
Ruft den URI für einen Anspruch ab, der das Geschlecht einer Entität angibt. |
GivenName |
Ruft den URI für einen Anspruch ab, der den angegebenen Namen einer Entität angibt. |
Hash |
Ruft den URI für einen Anspruch ab, der einen Hashwert angibt. |
HomePhone |
Ruft den URI für einen Anspruch ab, der die private Telefonnummer einer Entität angibt. |
Locality |
Ruft den URI für einen Anspruch ab, der das Gebietsschema angibt, in dem sich eine Entität befindet. |
MobilePhone |
Ruft den URI für einen Anspruch ab, der die Mobiltelefonnummer einer Entität angibt. |
Name |
Ruft den URI für einen Anspruch ab, der den Namen einer Entität angibt. |
NameIdentifier |
Ruft den URI für einen Anspruch ab, der den Namen einer Entität angibt. |
OtherPhone |
Ruft den URI für einen Anspruch ab, der die alternative Telefonnummer einer Entität angibt. |
PostalCode |
Ruft den URI für einen Anspruch ab, der die Postleitzahl einer Entität angibt. |
PPID |
Ruft den URI für einen Anspruch ab, der den privaten persönlichen Bezeichner (PPI) einer Entität angibt. |
Rsa |
Ruft den URI für einen Anspruch ab, der einen RSA-Schlüssel angibt. |
Sid |
Ruft den URI für einen Anspruch ab, der eine Sicherheits-ID (SID) angibt. |
Spn |
Ruft den URI für einen Anspruch ab, der einen Dienstprinzipalnamen-Anspruch (SPN) angibt. |
StateOrProvince |
Ruft den URI für einen Anspruch ab, der das Bundesland oder den Kanton angibt, in dem sich eine Entität befindet. |
StreetAddress |
Ruft den URI für einen Anspruch ab, der die Adresse einer Entität angibt. |
Surname |
Ruft den URI für einen Anspruch ab, der den Nachnamen einer Entität angibt. |
System |
Ruft den URI für einen Anspruch ab, der die Systementität identifiziert. |
Thumbprint |
Ruft den URI für einen Anspruch ab, der einen Fingerabdruck angibt. |
Upn |
Ruft den URI für einen Anspruch ab, der einen Benutzerprinzipalnamen (UPN) angibt. |
Uri |
Ruft den URI für einen Anspruch ab, der einen URI angibt. |
Webpage |
Ruft den URI für einen Anspruch ab, der die Webseite einer Entität angibt. |
X500DistinguishedName |
Ruft die Zeichenfolge ab, die den URI für einen Distinguished Name-Anspruch eines X.509-Zertifikats enthält. |