RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A 構造体 (rpcdce.h)

RPC_HTTP_TRANSPORT_CREDENTIALS_V3構造体は、RPC/HTTP を使用するときに RPC プロキシ サーバーまたは HTTP プロキシ サーバーに対して認証するための追加の資格情報を定義します。

RPC_HTTP_TRANSPORT_CREDENTIALS_V3、任意の 資格情報フォームを使用できるようにすることで、RPC_HTTP_TRANSPORT_CREDENTIALS_V2を拡張します。

構文

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A {
  RPC_AUTH_IDENTITY_HANDLE TransportCredentials;
  unsigned long            Flags;
  unsigned long            AuthenticationTarget;
  unsigned long            NumberOfAuthnSchemes;
  unsigned long            *AuthnSchemes;
  unsigned char            *ServerCertificateSubject;
  RPC_AUTH_IDENTITY_HANDLE ProxyCredentials;
  unsigned long            NumberOfProxyAuthnSchemes;
  unsigned long            *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A;

メンバー

TransportCredentials

RPC_AUTH_IDENTITY_HANDLE構造体の形式の不透明な認証ハンドルへのポインター。

Flags

ビットごとの OR 演算子と組み合わせることができるフラグのセット。

説明
RPC_C_HTTP_FLAG_USE_SSL
SSL を使用して RPC プロキシと通信するように RPC に指示します。
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
設定すると、RPC は AuthnSchemes 配列内の最初のスキームを選択し、RPC プロキシに対する認証を試みます。 RPC プロキシが選択した認証スキームをサポートしていない場合、呼び出しは失敗します。 設定されていない場合、RPC クライアントは RPC プロキシに対してサポートされている認証スキームを照会し、いずれかを選択します。

AuthenticationTarget

認証ターゲットを指定します。

次の値のいずれかまたは両方に設定する必要があります。

説明
RPC_C_HTTP_AUTHN_TARGET_SERVER
HTTP 観点から HTTP サーバーである RPC プロキシに対して認証します。 これは最も一般的な値です。
RPC_C_HTTP_AUTHN_TARGET_PROXY
HTTP プロキシに対して認証します。 この値は一般的ではありません。

NumberOfAuthnSchemes

AuthnScheme 配列内の要素の数。

AuthnSchemes

クライアントが使用する認証スキームの配列へのポインター。 配列の各要素には、次のいずれかの定数を含めることができます。

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT、RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE、およびRPC_C_HTTP_AUTHN_SCHEME_DIGESTは定数として定義されていますが、現在はサポートされていません。 呼び出し元は、それらを指定しないでください。これにより、RPC_S_CANNOT_SUPPORTエラーが発生します。 各定数は 1 回指定できます。 RPC はパフォーマンス上の理由からこの制限を検証しませんが、定数を複数回指定すると未定義の結果が生成されます。

実際の認証スキームを選択するためのアルゴリズムは次のとおりです。

RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEMEが指定されている場合は、最初の認証スキームが選択されます。 サーバーでサポートされていない場合、接続の確立は失敗します。 RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEMEが指定されていない場合、RPC クライアントは最初に RPC プロキシへの匿名接続を試行します。 IIS から認証チャレンジが返された場合、RPC クライアントは、サーバーが AuthnScheme 配列にも存在する場合に優先する認証スキームを選択します。 サーバーが優先するスキームが AuthnScheme 配列にない場合、 AuthnScheme 配列は最初から最後まで走査され、サーバーでもサポートされているスキームが見つかった場合は、その認証スキームが使用されます。

ServerCertificateSubject

予期されるサーバー プリンシパル名を持つ省略可能な文字列が含まれます。 プリンシパル名は、 RpcCertGeneratePrincipalName に対して生成された形式と同じです (詳細については、「 プリンシパル名 」を参照してください)。 このメンバーは、SSL が使用されている場合にのみ使用されます。 このような場合は、生成されたプリンシパル名に対してサーバー証明書がチェックされます。 一致しない場合は、エラーが返されます。 このメンバーにより、クライアントは RPC プロキシを認証できます。

ProxyCredentials

HTTP プロキシ サーバーに対して認証するときに 、RPC_AUTH_IDENTITY_HANDLE 構造の形式で不透明な認証ハンドルへのポインター。 ProxyCredentials は、 AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXYが含まれている場合にのみ有効です。

NumberOfProxyAuthnSchemes

HTTP プロキシ サーバーに対して認証するときの ProxyAuthnSchemes 配列内の要素の数。 NumberOfProxyAuthnSchemes は、 AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXYが含まれている場合にのみ有効です。

ProxyAuthnSchemes

HTTP プロキシ サーバーに対して認証するときにクライアントが使用する認証スキームの配列へのポインター。 配列の各要素には、次のいずれかの定数を含めることができます。 ProxyAuthnSchemes は、 AuthenticationTargetRPC_C_HTTP_AUTHN_TARGET_PROXYが含まれている場合にのみ有効です。

RPC_C_HTTP_AUTHN_SCHEME_BASIC

RPC_C_HTTP_AUTHN_SCHEME_NTLM

RPC_C_HTTP_AUTHN_SCHEME_PASSPORT

RPC_C_HTTP_AUTHN_SCHEME_DIGEST

RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE

解説

TransportCredentials メンバーが NULL で、認証スキームが NTLM の場合、現在ログオンしているユーザーの資格情報が使用されます。 弱い LM ハッシュを介してネットワーク上のユーザー資格情報が公開されないようにするために、ユーザー ログオン資格情報は、次の条件のいずれかまたは両方が当てはまる場合にのみ使用されます。

  • 呼び出し元は SSL の使用を要求し、 ServerCertificateSubject メンバーを 使用しました。 このシナリオでは、弱いハッシュが使用されている場合でも、転送中と最終的な宛先の両方で資格情報が保護されていることが保証されます。
  • lncompatibilitylevel キーは 2 以上に設定されています。 これにより、NTLM セキュリティ プロバイダーは、弱い LM ハッシュではなく、強力な NT ハッシュのみを出力または応答します。 さらに、NTLMv2 を試みるレベル 3 以上を使用することをお勧めします。
RpcBindingSetAuthInfoEx 関数の Unicode バージョンを使用する場合は、RPC_HTTP_TRANSPORT_CREDENTIALS_V3およびSEC_WINNT_AUTH_IDENTITY構造体の Unicode バージョンも指定する必要があり、TransportCredentialsFlags メンバーを SEC_WINNT_AUTH_IDENTITY_UNICODE に設定する必要があります。 RPCBindingSetAuthInfoEx 関数の ANSI バージョンを使用する場合は、ANSI バージョンのRPC_HTTP_TRANSPORT_CREDENTIALS_V3構造体とSEC_WINNT_AUTH_IDENTITY構造体を指定し、TransportCredentialsFlags メンバーを SEC_WINNT_AUTH_IDENTITY_ANSI に設定する必要があります。

要件

   
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
Header rpcdce.h (Rpc.h を含む)

関連項目

プリンシパル名

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V2

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

RPC over HTTP を使用したリモート プロシージャ コール

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY