RpcBindingSetAuthInfoExA 関数 (rpcdce.h)

RpcBindingSetAuthInfoEx 関数は、バインディング ハンドルの認証、承認、およびセキュリティのサービス品質情報を設定します。

構文

RPC_STATUS RpcBindingSetAuthInfoExA(
  RPC_BINDING_HANDLE       Binding,
  RPC_CSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc,
  RPC_SECURITY_QOS         *SecurityQos
);

パラメーター

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 を使用する場合は、(Rpcdce.h で定義されている) SEC_WINNT_AUTH_IDENTITY構造体へのポインターである必要があります。 Kerberos および Negotiate 認証サービスでは、 SEC_WINNT_AUTH_IDENTITY 構造も使用されます。

現在のアドレス空間のセキュリティ ログイン コンテキストを使用するには、null 値を指定します。 匿名ログイン コンテキストを使用するには、RPC_C_NO_CREDENTIALS値を渡します。 RPC_C_NO_CREDENTIALSは、認証サービスとしてRPC_C_AUTHN_GSS_SCHANNELが選択されている場合にのみ有効であることに注意してください。

AuthzSvc

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

SecurityQos

サービスのセキュリティ品質を定義する RPC_SECURITY_QOS 構造体へのポインター。

メモ RPC でサポートされる認証サービスの一覧については、「 Authentication-Service Constants」を参照してください。
 

戻り値

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

注釈

クライアント アプリケーションは RpcBindingSetAuthInfoEx 関数を 呼び出して、認証されたリモート プロシージャ 呼び出しを行うサーバー バインド ハンドルを設定します。 この関数は、バインディング ハンドルにセキュリティのサービス品質情報を設定する機能を提供します。 それ以外の場合は 、RpcBindingSetAuthInfo と同じです。

クライアントが RpcBindingSetAuthInfoEx を呼び出さない限り、 Binding に対するすべてのリモート プロシージャ呼び出しは認証されません。 この関数を呼び出すためにクライアントは必要ありません。

RpcBindingSetAuthInfoEx 関数は、資格情報のスナップショットを受け取ります。 したがって、 AuthIdentity パラメーター専用のメモリは、バインド ハンドルの前に解放できます。 この例外は、アプリケーションで rpcBindingSetAuthInfoEx と RPC_C_QOS_IDENTITY_DYNAMICを使用し、AuthIdentityNULL 以外の値を指定する場合です。

メモ 同じハンドルに対する RPC 呼び出しの進行中は、バインド ハンドルで RpcBindingSetAuthInfo 関数を呼び出さないでください。 これにより、未定義の結果が生成されます。
 
さまざまなバージョンの Microsoft RPC の要件が異なるため、バインディング ハンドルが存在する限り、アプリケーションで AuthIdentity パラメーターへのポインターを維持することをお勧めします。 これにより、アプリケーションの移植性が向上します。

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

メモncalrpc プロトコル シーケンスでは、RPC_C_AUTHN_WINNTのみがサポートされますが、相互認証はサポートされます。は SPN を指定し、これを実現するために SecurityQOS パラメーターを使用して相互認証を要求します。
 

注意

rpcdce.h ヘッダーは、RPCBindingSetAuthInfoEx をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

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

こちらもご覧ください

RPC_SECURITY_QOS

RpcBindingInqAuthInfoEx

RpcServerRegisterAuthInfo