RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W 構造体 (rpcdce.h)

RPC_HTTP_TRANSPORT_CREDENTIALS_V2構造では、RPC/HTTP を使用する場合に RPC プロキシ サーバーまたは HTTP プロキシ サーバーに対して認証するための追加の資格情報が定義されます。

RPC_HTTP_TRANSPORT_CREDENTIALS_V2 は、HTTP プロキシ サーバーに対する認証を許可することで、 RPC_HTTP_TRANSPORT_CREDENTIALS を拡張します。

構文

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W {
  SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned short            *ServerCertificateSubject;
  SEC_WINNT_AUTH_IDENTITY_W *ProxyCredentials;
  unsigned long             NumberOfProxyAuthnSchemes;
  unsigned long             *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W;

メンバー

TransportCredentials

ユーザーのユーザー 名、ドメイン 、パスワードを含むSEC_WINNT_AUTH_IDENTITY構造体へのポインター。

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 プロキシ サーバーに対して認証するときに、ユーザーのユーザー名、ドメイン、パスワードを含む SEC_WINNT_AUTH_IDENTITY構造体への ポインター。 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_V2およびSEC_WINNT_AUTH_IDENTITY構造体の Unicode バージョンも指定する必要があり、TransportCredentialsFlags メンバーをSEC_WINNT_AUTH_IDENTITY_UNICODEに設定する必要があります。 RPCBindingSetAuthInfoEx 関数の ANSI バージョンを使用する場合は、RPC_HTTP_TRANSPORT_CREDENTIALS_V2およびSEC_WINNT_AUTH_IDENTITY構造体の ANSI バージョンを指定し、TransportCredentialsFlags メンバーをSEC_WINNT_AUTH_IDENTITY_ANSIに設定する必要があります。

要件

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

こちらもご覧ください

プリンシパル名

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

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

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY