SpnEndpointIdentity クラス

定義

バインディングで Kerberos を使用する場合の ID のサービス プリンシパル名 (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

次のコードは、このクラスのインスタンスを作成する一般的な方法の 1 つを示しています。

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 を作成し、ID を SpnEndpointIdentityに設定します。 メッセージがそのサービスを対象としていることを確認します。

Kerberos で使用される 3 つの認証モードは次のとおりです。

  • SSPINegotiate

  • Kerberos

  • KerberosOverTransport。

コンストラクター

名前 説明
SpnEndpointIdentity(Claim)

指定した ID 要求を使用して、 SpnEndpointIdentity の新しいインスタンスを初期化します。

SpnEndpointIdentity(String)

指定したサービス プリンシパル名 (SPN) を使用して、 SpnEndpointIdentity の新しいインスタンスを初期化します。

プロパティ

名前 説明
IdentityClaim

ID に対応する ID 要求を取得します。

(継承元 EndpointIdentity)
SpnLookupTime

サービス プリンシパル名 (SPN) を検索できる最大時間を指定します。

メソッド

名前 説明
Equals(Object)

指定したオブジェクトが現在の ID オブジェクトと等しいか、または同じセキュリティ プロパティを持っているかどうかを決定する値を返します。

(継承元 EndpointIdentity)
GetHashCode()

ID の現在のインスタンスのハッシュ コードを提供します。

(継承元 EndpointIdentity)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
Initialize(Claim, IEqualityComparer<Claim>)

指定した要求とインターフェイスを使用して EndpointIdentity を初期化し、等価性を比較します。

(継承元 EndpointIdentity)
Initialize(Claim)

指定した要求を使用して EndpointIdentity を初期化します。

(継承元 EndpointIdentity)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

ID を返します。

(継承元 EndpointIdentity)

適用対象