SpnEndpointIdentity Classe

Definição

Representa um nome principal de serviço (SPN) para uma identidade quando a ligação usa Kerberos.

public ref class SpnEndpointIdentity : System::ServiceModel::EndpointIdentity
public class SpnEndpointIdentity : System.ServiceModel.EndpointIdentity
type SpnEndpointIdentity = class
    inherit EndpointIdentity
Public Class SpnEndpointIdentity
Inherits EndpointIdentity
Herança
SpnEndpointIdentity

Exemplos

O código seguinte mostra uma forma comum de criar uma instância desta classe.

static EndpointIdentity CreateIdentity()
 {
     WindowsIdentity self = WindowsIdentity.GetCurrent();
     SecurityIdentifier sid = self.User;

     EndpointIdentity identity = null;

     if (sid.IsWellKnown(WellKnownSidType.LocalSystemSid) ||
         sid.IsWellKnown(WellKnownSidType.NetworkServiceSid) ||
         sid.IsWellKnown(WellKnownSidType.LocalServiceSid))
     {
         identity = EndpointIdentity.CreateSpnIdentity(
             string.Format(CultureInfo.InvariantCulture, "host/{0}", GetMachineName()));
     }
     else
     {
         // Need an UPN string here
         string domain = GetPrimaryDomain();
         if (domain != null)
         {
             string[] split = self.Name.Split('\\');
             if (split.Length == 2)
             {
                 identity = EndpointIdentity.CreateUpnIdentity(split[1] + "@" + domain);
             }
         }
     }

     return identity;
 }
Private Shared Function CreateIdentity() As EndpointIdentity
     Dim self As WindowsIdentity = WindowsIdentity.GetCurrent()
     Dim sid As SecurityIdentifier = self.User

     Dim identity As EndpointIdentity = Nothing

     If sid.IsWellKnown(WellKnownSidType.LocalSystemSid) OrElse sid.IsWellKnown(WellKnownSidType.NetworkServiceSid) OrElse sid.IsWellKnown(WellKnownSidType.LocalServiceSid) Then
         identity = EndpointIdentity.CreateSpnIdentity(String.Format(CultureInfo.InvariantCulture, "host/{0}", GetMachineName()))
     Else
         ' Need an UPN string here
         Dim domain As String = GetPrimaryDomain()
         If domain IsNot Nothing Then
             Dim split() As String = self.Name.Split("\"c)
             If split.Length = 2 Then
                 identity = EndpointIdentity.CreateUpnIdentity(split(1) & "@" & domain)
             End If
         End If
     End If

     Return identity
End Function

Observações

Um SPN é o nome pelo qual um cliente identifica exclusivamente uma instância de um serviço. Se instalar múltiplas instâncias de um serviço em computadores ao longo de uma floresta, cada instância deve ter o seu próprio SPN. Uma dada instância de serviço pode ter múltiplos SPNs se existirem vários nomes que os clientes possam usar para autenticação.

Quando um cliente quer ligar-se a um serviço, localiza uma instância do serviço, compõe um SPN para essa instância e define a identidade para um SpnEndpointIdentity. Será feita uma verificação para garantir que a mensagem é destinada a esse serviço.

Os três modos de autenticação usados sob o Kerberos são:

  • SSPINegotiate

  • Kerberos

  • KerberosOverTransport.

Construtores

Name Description
SpnEndpointIdentity(Claim)

Inicializa uma nova instância de SpnEndpointIdentity com a reivindicação de identidade especificada.

SpnEndpointIdentity(String)

Inicializa uma nova instância de SpnEndpointIdentity com o nome principal de serviço (SPN) especificado.

Propriedades

Name Description
IdentityClaim

Obtém a reivindicação de identidade que corresponde à identidade.

(Herdado de EndpointIdentity)
SpnLookupTime

Especifica o tempo máximo permitido para consultar o nome do principal do serviço (SPN).

Métodos

Name Description
Equals(Object)

Devolve um valor que determina se um objeto especificado é igual ao objeto identidade atual ou se têm propriedades de segurança iguais.

(Herdado de EndpointIdentity)
GetHashCode()

Fornece um código de hash para a instância atual da identidade.

(Herdado de EndpointIdentity)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize(Claim, IEqualityComparer<Claim>)

Inicializa um EndpointIdentity com a reivindicação especificada e uma interface e compara a igualdade.

(Herdado de EndpointIdentity)
Initialize(Claim)

Inicializa um EndpointIdentity com a reivindicação especificada.

(Herdado de EndpointIdentity)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve a identidade.

(Herdado de EndpointIdentity)

Aplica-se a