Esporta (0) Stampa
Espandi tutto

Classe SpnEndpointIdentity

Aggiornamento: novembre 2007

Rappresenta un nome principale di servizio (SPN) di un'identità quando l'associazione utilizza Kerberos.

Spazio dei nomi:  System.ServiceModel
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public class SpnEndpointIdentity : EndpointIdentity
public class SpnEndpointIdentity extends EndpointIdentity
public class SpnEndpointIdentity extends EndpointIdentity

Un SPN è il nome in base al quale un client identifica in modo univoco un'istanza di un servizio. Se si installano più istanze di un servizio in computer distribuiti in una foresta, a ogni istanza deve essere associato un nome SPN distinto. Se i client possono utilizzare più nomi per l'autenticazione, una determinata istanza di servizio può presentare più SPN.

Per connettersi a un servizio, il client individua anzitutto un'istanza del servizio, quindi compone un SPN per tale istanza e infine imposta l'identità su un oggetto SpnEndpointIdentity. Il sistema verifica che il messaggio sia destinato a tale servizio.

Le tre modalità di autenticazione utilizzate in Kerberos sono:

  • SSPINegotiate

  • Kerberos

  • KerberosOverTransport.

Nell'esempio di codice seguente viene mostrato un unico modo comune per creare un'istanza di questa 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;
 }


System.Object
  System.ServiceModel.EndpointIdentity
    System.ServiceModel.SpnEndpointIdentity

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft