次の方法で共有


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

このクラスのインスタンスを作成する一般的な方法を次のコードに示します。

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 は、クライアントがサービスのインスタンスを一意に識別する名前です。 フォレストの複数のコンピューターに 1 つのサービスの複数のインスタンスをインストールする場合、各インスタンスには独自の 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)

指定したクレームを使用して、EndpointIdentity を初期化します。

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

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

(継承元 EndpointIdentity)
MemberwiseClone()

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

(継承元 Object)
ToString()

ID を返します。

(継承元 EndpointIdentity)

適用対象