次の方法で共有


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

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

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

AuthnLevel

バインディングを使用して行われるリモート プロシージャ コールに対して実行される認証のレベル。 RPC でサポートされる認証レベルの一覧については、「Authentication-Level 定数の」を参照してください。

AuthnSvc

使用する認証サービス。

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

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

AuthIdentity

選択した認証および承認サービスに適したクライアントの認証資格情報と承認資格情報を含む構造体のハンドル。

RPC_C_AUTHN_WINNT 認証サービスを使用する場合 AuthIdentity は、(Rpcdce.h で定義されている) SEC_WINNT_AUTH_IDENTITY 構造体へのポインターである必要があります。 Kerberos 認証サービスとネゴシエート認証サービスでは、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 定数の」を参照してください。
 

戻り値

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

備考

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

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

RpcBindingSetAuthInfoEx 関数は、資格情報のスナップショットを取得します。 そのため、バインド ハンドルの前に、AuthIdentity パラメーター専用のメモリを解放できます。 これに対する例外は、アプリケーションで RPC_C_QOS_IDENTITY_DYNAMIC RpcBindingSetAuthInfoEx を使用し、AuthIdentityに対して非NULL 値を指定する場合です。

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

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

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー rpcdce.h (Rpc.h を含む)
ライブラリ Rpcrt4.lib
DLL Rpcrt4.dll

関連項目

RPC_SECURITY_QOS

RpcBindingInqAuthInfoEx を する

RpcServerRegisterAuthInfo の