ClaimTypes Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa os tipos pré-definidos de reivindicações que uma entidade pode reclamar. Esta classe não pode ser herdada.
public ref class ClaimTypes abstract sealed
public static class ClaimTypes
type ClaimTypes = class
Public Class ClaimTypes
- Herança
-
ClaimTypes
Exemplos
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
Observações
Use a ClaimTypes classe para procurar um tipo específico de reclamação ou ClaimSet para criar uma reclamação. Para procurar um tipo particular de reivindicação num ClaimSet, use o FindClaims(String, String) método e as propriedades desta classe para especificar o tipo de reivindicação para o claimType parâmetro. Quando o construtor da Claim classe for usado para criar uma nova reivindicação, use as propriedades da ClaimTypes classe para especificar o claimType parâmetro. Para muitos dos tipos de reivindicações, a Claim classe tem propriedades estáticas que retornam uma reivindicação de um tipo específico. Por exemplo, o CreateHashClaim(Byte[]) método devolve uma reclamação usando o Hash tipo de reclamação.
Propriedades
| Name | Description |
|---|---|
| Anonymous |
Obtém o URI de uma reclamação que especifica o utilizador anónimo. |
| Authentication |
Obtém o URI para uma reivindicação que especifica detalhes sobre se uma identidade é autenticada. |
| AuthorizationDecision |
Recebe o URI de uma reclamação que especifica uma decisão de autorização sobre uma entidade. |
| Country |
Obtém o URI de uma reclamação que especifica o país/região onde a entidade reside. |
| DateOfBirth |
Obtém o URI de uma reclamação que especifica a data de nascimento de uma entidade. |
| DenyOnlySid |
Obtém o URI de uma reclamação que especifica um identificador de segurança apenas negado (SID) para uma entidade. |
| Dns |
Obtém o URI para uma reivindicação que especifica o nome DNS associado ao nome do computador ou ao nome alternativo do sujeito ou emissor de um certificado X.509. |
|
Obtém o URI de uma reclamação que especifica o endereço de email de uma entidade. |
|
| Gender |
Obtém o URI de uma reivindicação que especifica o género de uma entidade. |
| GivenName |
Obtém o URI de uma reivindicação que especifica o nome próprio de uma entidade. |
| Hash |
Obtém o URI de uma reivindicação que especifica um valor de hash. |
| HomePhone |
Recebe o URI de uma reclamação que especifica o número de telefone fixo de uma entidade. |
| Locality |
Obtém o URI de uma reivindicação que especifica o local onde uma entidade reside. |
| MobilePhone |
Recebe o URI de uma reclamação que especifica o número de telemóvel de uma entidade. |
| Name |
Recebe o URI de uma reivindicação que especifica o nome de uma entidade. |
| NameIdentifier |
Recebe o URI de uma reivindicação que especifica o nome de uma entidade. |
| OtherPhone |
Recebe o URI de uma reclamação que especifica o número de telefone alternativo de uma entidade. |
| PostalCode |
Obtém o URI de uma reclamação que especifica o código postal de uma entidade. |
| PPID |
Obtém o URI de uma reclamação que especifica o identificador pessoal privado (PPI) de uma entidade. |
| Rsa |
Recebe o URI de uma reclamação que especifica uma chave RSA. |
| Sid |
Obtém o URI de uma reivindicação que especifica um identificador de segurança (SID). |
| Spn |
Recebe o URI de uma reivindicação que especifica uma reivindicação de nome principal de serviço (SPN). |
| StateOrProvince |
Obtém o URI de uma reclamação que especifica o estado ou província onde a entidade reside. |
| StreetAddress |
Obtém o URI de uma reclamação que especifica a morada de uma entidade. |
| Surname |
Obtém o URI de uma reivindicação que especifica o apelido de uma entidade. |
| System |
Obtém o URI de uma reclamação que identifica a entidade do sistema. |
| Thumbprint |
Recebe o URI de uma reclamação que especifica uma impressão digital. |
| Upn |
Obtém o URI de uma reclamação que especifica um nome principal de utilizador (UPN). |
| Uri |
Recebe o URI de uma reivindicação que especifica um URI. |
| Webpage |
Obtém o URI de uma reivindicação que especifica a página web de uma entidade. |
| X500DistinguishedName |
Obtém a cadeia que contém o URI para uma reivindicação de nome distinto de um certificado X.509. |