RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A結構 (rpcdce.h)
RPC_HTTP_TRANSPORT_CREDENTIALS_V3結構會定義其他認證,以在使用 RPC/HTTP 時向 RPC Proxy 伺服器或 HTTP Proxy 伺服器進行驗證。
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
指定驗證目標。
應設定為下列其中一個或兩個值:
值 | 意義 |
---|---|
|
根據 RPC Proxy 進行驗證,這是從 HTTP 觀點來看的 HTTP 伺服器。 這是最常見的值。 |
|
對 HTTP Proxy 進行驗證。 這個值並不常見。 |
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錯誤。 每個常數都可以指定一次。 RPC 不會基於效能考慮來驗證此限制,但指定常數多次會產生未定義的結果。
選擇實際驗證配置的演算法如下所示:
如果指定RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME,則會選擇第一個驗證配置。 如果伺服器不支援,連線建立就會失敗。 如果未指定RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME,RPC 用戶端會先嘗試匿名連線到 RPC Proxy。 如果 IIS 傳回驗證挑戰,如果伺服器也位於 AuthnScheme 陣列中,RPC 用戶端會選擇伺服器慣用的驗證配置。 如果伺服器慣用的配置不在 AuthnScheme 陣列中,則會從頭到尾周遊 AuthnScheme 陣列,如果找到伺服器也支援的配置,則會使用該驗證配置。
ServerCertificateSubject
包含具有預期伺服器主體名稱的選擇性字串。 主體名稱的格式與針對 RpcCertGeneratePrincipalName 產生的格式相同, (如需詳細資訊,請參閱 主體名稱 以取得) 。 只有在使用 SSL 時,才會使用此成員。 在這種情況下,系統會根據產生的主體名稱檢查伺服器憑證。 如果不符合,則會傳回錯誤。 此成員可讓用戶端驗證 RPC Proxy。
ProxyCredentials
針對 HTTP Proxy 伺服器進行驗證時,以 RPC_AUTH_IDENTITY_HANDLE 結構形式呈現不透明驗證控制碼的指標。 只有在AuthenticationTarget包含RPC_C_HTTP_AUTHN_TARGET_PROXY時,ProxyCredentials才有效。
NumberOfProxyAuthnSchemes
針對 HTTP Proxy 伺服器進行驗證時, ProxyAuthnSchemes 陣列中的元素數目。 NumberOfProxyAuthnSchemes 只有在 AuthenticationTarget 包含 RPC_C_HTTP_AUTHN_TARGET_PROXY時才有效。
ProxyAuthnSchemes
用戶端在針對 HTTP Proxy 伺服器進行驗證時,願意使用的驗證配置陣列指標。 陣列的每個元素都可以包含下列其中一個常數。 只有在AuthenticationTarget包含RPC_C_HTTP_AUTHN_TARGET_PROXY時,ProxyAuthnSchemes才有效。
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 安全性提供者只發出或回應強式 NT 雜湊,而不是弱式 LM 雜湊。 此外,建議客戶使用層級 3 或更高版本,這會嘗試 NTLMv2。
需求
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
標頭 | rpcdce.h (包含 Rpc.h) |
另請參閱
RPC_HTTP_TRANSPORT_CREDENTIALS