SpnEndpointIdentity 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示当绑定使用 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
- 继承
示例
下面的代码演示创建此类的实例的一种常用方式。
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,并且将标识设置为 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) |
使用指定的声明初始化 EndpointIdentity。 (继承自 EndpointIdentity) |
Initialize(Claim, IEqualityComparer<Claim>) |
使用指定的声明和接口初始化 EndpointIdentity 并对相等性进行比较。 (继承自 EndpointIdentity) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
返回标识。 (继承自 EndpointIdentity) |