ClaimTypes Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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. |
|
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. |