サービスでその SPN を構成する方法

サービスは、次の2つの関数を使用してSPNを構成できます。DsGetSpnはSPNを構成するための汎用関数であり、DsServerRegisterSpnはホストベースのサービスの単純なSPNを構成および登録するための特殊な関数です。

通常、サービスインストーラーはDsGetSpn関数を使用してSPNを構成し、DsWriteAccountSpn関数を使用してサービスのログオンアカウントに登録します。 DsGetSpnは、次の関数を実行できます。

  • ホストベースのサービス用に、"<service class>/<host>"形式の単純なSPNを作成します。
  • レプリケート可能なサービスで使用される"<サービス名>"コンポーネント、または1つのホスト上のサービスの複数のインスタンスを区別する"<ポート>"コンポーネントを含む複雑なSPNを作成します。
  • "<ホスト>"コンポーネントを既定で指定されたホストの名前またはローカルコンピューターの名前に設定して、単一のSPNを作成します。
  • フォレスト全体の複数のホストで実行される複数のサービスインスタンスのSPNの配列を作成します。 各SPNは、サービスインスタンスのホスト名を指定します。
  • 同じホストで実行される複数のサービスインスタンスのSPNの配列を作成します。 各SPNは、サービスインスタンスのホスト名とポート番号を指定します。

DsGetSpnによって返される名前の配列は、DsFreeSpnArray関数を呼び出すことによって解放する必要があります。

DsGetSpn, DsWriteAccountSpn,およびDsServerRegisterSpn関数では、SPNが一意であることが確認されないことに注意してください。 クライアントが一意でないSPNを提示すると相互認証が失敗するため、SPNを登録する前に一意性を確認してください。 これを行うには、グローバルカタログ (GC) で、SPNに一致するservicePrincipalName属性を検索します。 GCの検索の詳細については、 グローバルカタログの検索を参照してください。