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 演算子と組み合わせることができるフラグのセット。
AuthenticationTarget
認証ターゲットを指定します。
次の値のいずれかまたは両方に設定する必要があります。
値 | 説明 |
---|---|
|
HTTP 観点から HTTP サーバーである RPC プロキシに対して認証します。 これは最も一般的な値です。 |
|
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 は、 AuthenticationTarget に RPC_C_HTTP_AUTHN_TARGET_PROXYが含まれている場合にのみ有効です。
NumberOfProxyAuthnSchemes
HTTP プロキシ サーバーに対して認証するときの ProxyAuthnSchemes 配列内の要素の数。 NumberOfProxyAuthnSchemes は、 AuthenticationTarget に RPC_C_HTTP_AUTHN_TARGET_PROXYが含まれている場合にのみ有効です。
ProxyAuthnSchemes
HTTP プロキシ サーバーに対して認証するときにクライアントが使用する認証スキームの配列へのポインター。 配列の各要素には、次のいずれかの定数を含めることができます。 ProxyAuthnSchemes は、 AuthenticationTarget に RPC_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 以上を使用することをお勧めします。
要件
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header | rpcdce.h (Rpc.h を含む) |
関連項目
RPC_HTTP_TRANSPORT_CREDENTIALS
RPC_HTTP_TRANSPORT_CREDENTIALS_V2