SpnEndpointIdentity 类

定义

表示绑定使用 Kerberos 时标识的服务主体名称(SPN)。

public ref class SpnEndpointIdentity : System::ServiceModel::EndpointIdentity
public class SpnEndpointIdentity : System.ServiceModel.EndpointIdentity
type SpnEndpointIdentity = class
    inherit EndpointIdentity
Public Class SpnEndpointIdentity
Inherits EndpointIdentity
继承
SpnEndpointIdentity

示例

以下代码演示了创建此类实例的一种常见方法。

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

注解

SPN 是一个名称,客户端通过该名称唯一地标识服务实例。 如果在整个林的计算机上安装多个服务实例,则每个实例都必须有自己的 SPN。 如果客户端可能用于身份验证的多个名称,则给定的服务实例可以有多个 SPN。

当客户端想要连接到服务时,它会找到服务的实例,为该实例编写 SPN,并将标识设置为 a SpnEndpointIdentity。 将检查消息是否适用于该服务。

Kerberos 下使用的三种身份验证模式是:

  • SSPINegotiate

  • Kerberos

  • KerberosOverTransport。

构造函数

名称 说明
SpnEndpointIdentity(Claim)

使用指定的标识声明初始化新实例 SpnEndpointIdentity

SpnEndpointIdentity(String)

使用指定的服务主体名称(SPN)初始化新实例 SpnEndpointIdentity

属性

名称 说明
IdentityClaim

获取与标识对应的标识声明。

(继承自 EndpointIdentity)
SpnLookupTime

指定允许查找服务主体名称(SPN)的最大时间。

方法

名称 说明
Equals(Object)

返回一个值,该值确定指定的对象是否等于当前标识对象,或者它们是否具有相等的安全属性。

(继承自 EndpointIdentity)
GetHashCode()

为标识的当前实例提供哈希代码。

(继承自 EndpointIdentity)
GetType()

获取当前实例的 Type

(继承自 Object)
Initialize(Claim, IEqualityComparer<Claim>)

使用指定的声明和接口初始化一个 EndpointIdentity 并比较相等性。

(继承自 EndpointIdentity)
Initialize(Claim)

使用指定的声明初始化一个 EndpointIdentity

(继承自 EndpointIdentity)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
ToString()

返回标识。

(继承自 EndpointIdentity)

适用于