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 または NetBIOS 名を指定する場合、InstanceName パラメーターは 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 で指定された長さである必要があります。 pszSpn パラメーターは、最終的なバッファー サイズを事前に要求するために NULL にすることができます。
戻り値
関数が SPN を返す場合、戻り値は ERROR_SUCCESS。 関数が失敗した場合、戻り値は次のいずれかのエラー コードになります。
注釈
DsMakeSpn 関数によって生成される SPN の形式は、入力パラメーターによって異なります。 基本的な形式は 2 つあります。 どちらの形式も 、ServiceClass 文字列の後にホスト コンピューター名とオプションの InstancePort コンポーネントで始まります。
"<ServiceClass>/<host>" 形式の SPN を生成するには
- ServiceName パラメーターを、サービス インスタンスのホスト コンピューターの DNS 名に設定します。 これは SPN のホスト コンポーネントです。
- InstanceName パラメーターと Referrer パラメーターを NULL に設定します。
-
InstancePort パラメーターを 0 に設定します。 InstancePort が 0 以外の場合、SPN の形式は次のようになります。
<service class>/<host>:<instance port>/<referrer>
"<ServiceClass>/<host>:<InstancePort>" 形式の SPN を生成するには
- InstanceName パラメーターを、サービス インスタンスのホスト コンピューターの DNS 名に設定します。 これはホスト コンポーネントです。
- ServiceName パラメーターを、サービスのインスタンスを識別する文字列に設定します。 たとえば、このサービス インスタンスのサービス接続ポイントの識別名を指定できます。
- Referrer パラメーターを NULL に設定します。
-
InstancePort パラメーターを 0 に設定します。 InstancePort が 0 以外の場合、SPN の形式は次のようになります。
<service class>/<host>:<instance port>/<service name>
<service class>/<host>:<instance port>/<referrer>
ここで、ホスト コンポーネントは InstanceName 文字列、InstanceName が NULL の場合は ServiceName 文字列、InstancePort コンポーネントは省略可能です。
文字列パラメーターは、SPN のコンポーネントを区切るために使用されるため、スラッシュ (/) 文字を含めることはできません。
注意
dsparse.h ヘッダーは、DSMakeSpn をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista |
サポートされている最小のサーバー | Windows Server 2008 |
対象プラットフォーム | Windows |
ヘッダー | dsparse.h (Ntdsapi.h を含む) |
Library | Ntdsapi.lib |
[DLL] | Ntdsapi.dll |