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,并将标识设置为 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) |