DsMakeSpnA 関数 (dsparse.h)
DsMakeSpn 関数は、サービス インスタンスを識別するサービス プリンシパル名 (SPN) を構築します。
クライアント アプリケーションでは、この関数を使用して SPN を作成します。SPN は、サービス インスタンスの認証に使用します。 たとえば、クライアントは、InitializeSecurityContext 関数の pszTargetName パラメーターに SPN を渡すことができます。
構文
DSPARSE DWORD DsMakeSpnA(
[in] LPCSTR ServiceClass,
[in] LPCSTR ServiceName,
[in, optional] LPCSTR InstanceName,
[in] USHORT InstancePort,
[in, optional] LPCSTR Referrer,
[in, out] DWORD *pcSpnLength,
[out] LPSTR pszSpn
);
パラメーター
[in] ServiceClass
サービスのクラスを指定する、null で終わる定数文字列へのポインター。 このパラメーターには、そのサービスに固有の任意の文字列を指定できます。プロトコル名 (ldap など) または GUID の文字列形式を使用できます。
[in] ServiceName
DNS 名、NetBIOS 名、または識別名 (DN) を指定する、null で終わる定数文字列へのポインター。 このパラメーターは、null
ServiceName、InstanceName、および InstancePort パラメーターを使用して SPN を作成する方法の詳細については、次の「解説」セクションを参照してください。
[in, optional] InstanceName
サービスのインスタンスのホストの DNS 名または IP アドレスを指定する、null で終わる定数文字列へのポインター。
ServiceName が DNS ドメイン名、DNS SRV レコードの名前、またはサービス接続ポイントの DN などの識別名を指定する場合、InstanceName パラメーターは、サービス ホスト コンピューターの DNS または NetBIOS 名を指定する必要があります。
[in] InstancePort
サービスのインスタンスのポート番号。 既定のポートには 0 を使用します。 このパラメーターが 0 の場合、SPN にはポート番号は含まれません。
[in, optional] Referrer
IP アドレス紹介を提供したホストの DNS 名を指定する、null で終わる定数文字列へのポインター。 ServiceName パラメーターで IP アドレスが指定されていない限り、このパラメーターは無視されます。
[in, out] pcSpnLength
新しく構築された SPN を受け取るバッファーの長さを文字数で表す変数へのポインター。 この値は、最終的なバッファー サイズを事前に要求するために 0 にすることができます。
pcSpnLength パラメーターは、作成された SPN の実際の長さ (終端の null 文字を含む) も受け取ります。
[out] pszSpn
構築された SPN を受け取る null で終わる文字列へのポインター。 このバッファーは、pcSpnLengthで指定された長さである必要があります。
戻り値
関数が SPN を返す場合、戻り値は ERROR_SUCCESS。 関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
備考
DsMakeSpn 関数によって生成される SPN の形式は、入力パラメーターによって異なります。 2 つの基本的な形式があります。 どちらの形式も、ServiceClass 文字列の後にホスト コンピューター名と、オプションの InstancePort コンポーネントで始まります。
"<ServiceClass>/<ホスト>" 形式の SPN を生成するには
- ServiceName パラメーターを、サービス インスタンスのホスト コンピューターの DNS 名に設定します。 これは SPN のホスト コンポーネントです。
InstanceName パラメーターとReferrer パラメーターを NULL設定します。 -
InstancePort パラメーターを 0 に設定します。 InstancePort
が 0 以外の場合、SPN の形式は次のようになります。 <service class>/<host>:<instance port>/<referrer>
"<ServiceClass>/<ホスト>を使用して SPN を生成するには: InstancePort>" 形式を<
- InstanceName パラメーターを、サービス インスタンスのホスト コンピューターの DNS 名に設定します。 これがホスト コンポーネントです。
- ServiceName パラメーターを、サービスのインスタンスを識別する文字列に設定します。 たとえば、このサービス インスタンスのサービス接続ポイントの識別名を指定できます。
Referrer パラメーターを NULL設定します。 -
InstancePort パラメーターを 0 に設定します。 InstancePort
が 0 以外の場合、SPN の形式は次のようになります。 <service class>/<host>:<instance port>/<service name>
<service class>/<host>:<instance port>/<referrer>
ホスト コンポーネントは、
文字列パラメーターは、SPN のコンポーネントを区切るために使用されるため、スラッシュ (/) 文字を含めることはできません。
手記
dsparse.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして DsMakeSpn を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista |
サポートされる最小サーバー | Windows Server 2008 |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | dsparse.h (Ntdsapi.h を含む) |
ライブラリ | Ntdsapi.lib |
DLL | Ntdsapi.dll |
関連項目
InitializeSecurityContext の