RpcBindingSetAuthInfo 関数 (rpcdce.h)

RpcBindingSetAuthInfo 関数は、バインド ハンドルの認証と承認の情報を設定します。

構文

RPC_STATUS RpcBindingSetAuthInfo(
  RPC_BINDING_HANDLE       Binding,
  RPC_CSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc
);

パラメーター

Binding

認証と承認の情報を適用するサーバー バインド ハンドル。

ServerPrincName

Binding によって参照されるサーバーの予想されるプリンシパル名へのポインター。 名前とその構文の内容は、使用中の認証サービスによって定義されます。

メモ SSP の許可されるターゲット名のセットについては、 InitializeSecurityContext ドキュメントのコメントを参照してください。
 

AuthnLevel

Binding を使用して行われたリモート プロシージャ 呼び出しで実行される認証のレベル。 RPC でサポートされる認証レベルの一覧については、 認証レベルの定数の一覧を参照してください。

AuthnSvc

使用する認証サービス。 注を参照。

バインドを使用して行われたリモート プロシージャ コールの認証を無効にするには、RPC_C_AUTHN_NONEを指定 します

RPC_C_AUTHN_DEFAULTが指定されている場合、RPC ランタイム ライブラリは 、Binding を使用して行われるリモート プロシージャ 呼び出しにRPC_C_AUTHN_WINNT認証サービスを使用します。

AuthIdentity

選択した認証および承認サービスに適したクライアントの認証資格情報と承認資格情報を含む構造体を処理します。RPC_C_AUTHN_WINNT認証サービス AuthIdentity を使用する場合は、 SEC_WINNT_AUTH_IDENTITY 構造体 (Rpcdce.h で定義) へのポインターにする必要があります。 Kerberos およびネゴシエート認証サービスでは、 SEC_WINNT_AUTH_IDENTITY 構造も使用されます。

RPC_C_AUTHN_GSS_SCHANNEL認証サービスを選択する場合、 AuthIdentity パラメーターは SCHANNEL_CRED 構造体 (Schannel.h で定義) へのポインターである必要があります。 現在のアドレス空間のセキュリティ ログイン コンテキストを使用するには、null 値を指定します。 匿名ログイン コンテキストを使用するには、RPC_C_NO_CREDENTIALS値を渡します。

メモ RPC_C_AUTHN_GSS_SCHANNEL認証サービスを選択するときに、 AuthIdentity パラメーターが SCH_CRED 構造体へのポインターである場合もあります。 ただし、Windows XP 以降の Windows リリースでは、RPC_C_AUTHN_GSS_SCHANNEL認証サービスの AuthIdentity パラメーターとして渡される唯一の許容される構造体は 、SCHANNEL_CRED 構造体です。
 

AuthzSvc

目的のインターフェイス用にサーバーによって実装される承認サービス。 注を参照。

承認データの有効性と信頼性は、任意のアプリケーション データと同様に、選択した認証サービスと認証レベルによって異なります。 RPC_C_AUTHN_WINNT認証サービスを使用する場合、このパラメーターは無視されます。

メモ 詳細については、「 Authentication-Service Constants」を参照してください。
 

戻り値

説明
RPC_S_OK
呼び出しは成功しました。
RPC_S_INVALID_BINDING
バインド ハンドルが無効でした。
RPC_S_WRONG_KIND_OF_BINDING
これは、操作の間違った種類のバインドでした。
RPC_S_UNKNOWN_AUTHN_SERVICE
不明な認証サービス。
 
メモ 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。
 

解説

クライアント アプリケーションは RpcBindingSetAuthInfo 関数を 呼び出して、認証されたリモート プロシージャ 呼び出しを行うためにサーバー バインド ハンドルを設定します。 この関数を呼び出すためにクライアントは必要ありません。

クライアントが RpcBindingSetAuthInfo を呼び出さない限り、 バインド バインド ハンドルに対するリモート プロシージャ呼び出しは認証されません。 サーバーは、リモート プロシージャ 呼び出し内から RpcBindingInqAuthClient を呼び出して、その呼び出しが認証されているかどうかを判断できます。

RpcBindingSetAuthInfo 関数は、資格情報のスナップショットを受け取ります。 したがって、 AuthIdentity パラメーター専用のメモリは、バインド ハンドルの前に解放できます。

Microsoft RPC のバージョンによって要件が異なるため、バインド ハンドルが存在する限り、アプリケーションで AuthIdentity パラメーターへのポインターを維持することをお勧めします。 これにより、アプリケーションの移植性が向上します。

Windows Server 2003 SP1 および Windows XP SP2: Windows XP SP2 および Windows Server 2003 SP1 の場合、 AuthIdentity パラメーターへのポインターをバインド ハンドルの有効期間中維持する必要はありません。 このポインターは、RpcBindingInqAuthInfo または RpcBindingInqAuthInfoEx の後続の呼び出しが行われる場合にのみ維持する必要があります。

メモ 同じハンドルに対する RPC 呼び出しの進行中は、バインド ハンドルで RpcBindingSetAuthInfo 関数を呼び出してはなりません。 これにより、未定義の結果が生成されます。
 

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー rpcdce.h (Rpc.h を含む)
Library Rpcrt4.lib
[DLL] Rpcrt4.dll

関連項目

MSMQ セキュリティ サービス

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo