estructura de RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A (rpcdce.h)
La estructura de RPC_HTTP_TRANSPORT_CREDENTIALS_V2 define credenciales adicionales para autenticarse en un servidor proxy RPC o en un servidor proxy HTTP cuando se usa RPC/HTTP.
RPC_HTTP_TRANSPORT_CREDENTIALS_V2 extiende RPC_HTTP_TRANSPORT_CREDENTIALS al permitir la autenticación en un servidor proxy HTTP.
Sintaxis
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A {
SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
unsigned long Flags;
unsigned long AuthenticationTarget;
unsigned long NumberOfAuthnSchemes;
unsigned long *AuthnSchemes;
unsigned char *ServerCertificateSubject;
SEC_WINNT_AUTH_IDENTITY_A *ProxyCredentials;
unsigned long NumberOfProxyAuthnSchemes;
unsigned long *ProxyAuthnSchemes;
} RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A;
Members
TransportCredentials
Puntero a una estructura de SEC_WINNT_AUTH_IDENTITY que contiene el nombre de usuario, el dominio y la contraseña del usuario.
Flags
Conjunto de marcas que se pueden combinar con el operador OR bit a bit.
AuthenticationTarget
Especifica el destino de autenticación.
Debe establecerse en uno o ambos de los valores siguientes:
NumberOfAuthnSchemes
Número de elementos de la matriz AuthnScheme .
AuthnSchemes
Puntero a una matriz de esquemas de autenticación que el cliente está dispuesto a usar. Cada elemento de la matriz puede contener una de las siguientes constantes:
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 y RPC_C_HTTP_AUTHN_SCHEME_DIGEST se definen como constantes, pero no se admiten actualmente. Los autores de llamadas no deben especificarlos; si lo hace, RPC_S_CANNOT_SUPPORT error. Cada constante se puede especificar una vez. RPC no comprueba esta restricción por motivos de rendimiento, pero especificar una constante más de una vez genera resultados indefinidos.
El algoritmo para elegir el esquema de autenticación real es el siguiente:
Si se especifica RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME, se elige el primer esquema de autenticación. Si no es compatible con el servidor, se produce un error en el establecimiento de la conexión. Si no se especifica RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME, el cliente RPC intenta primero la conexión anónima con el proxy RPC. Si IIS devuelve el desafío de autenticación, el cliente RPC elige el esquema de autenticación preferido por el servidor si también está en la matriz AuthnScheme . Si el esquema preferido por el servidor no está en la matriz AuthnScheme , la matriz AuthnScheme se recorrerá de principio a fin y, si se encuentra un esquema que también es compatible con el servidor, se usa ese esquema de autenticación.
ServerCertificateSubject
Contiene una cadena opcional con el nombre principal de servidor esperado. El nombre principal tiene el mismo formato que el generado para RpcCertGeneratePrincipalName (consulte Nombres principales para obtener más información). Este miembro solo se usa cuando se usa SSL. En tales casos, el certificado de servidor se comprueba con el nombre principal generado. Si no coinciden, se devuelve un error. Este miembro permite a los clientes autenticar el proxy RPC.
ProxyCredentials
Puntero a una estructura de SEC_WINNT_AUTH_IDENTITY que contiene el nombre de usuario, el dominio y la contraseña del usuario al autenticarse en un servidor proxy HTTP. ProxyCredentials solo es válido cuando AuthenticationTarget contiene RPC_C_HTTP_AUTHN_TARGET_PROXY.
NumberOfProxyAuthnSchemes
Número de elementos de la matriz ProxyAuthnSchemes al autenticarse en un servidor proxy HTTP. NumberOfProxyAuthnSchemes solo es válido cuando AuthenticationTarget contiene RPC_C_HTTP_AUTHN_TARGET_PROXY.
ProxyAuthnSchemes
Puntero a una matriz de esquemas de autenticación que el cliente está dispuesto a usar al autenticarse en un servidor proxy HTTP. Cada elemento de la matriz puede contener una de las siguientes constantes. ProxyAuthnSchemes solo es válido cuando AuthenticationTarget contiene 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
Comentarios
Si el miembro TransportCredentials es NULL y el esquema de autenticación es NTLM, se usan las credenciales del usuario que ha iniciado sesión actualmente. Para evitar exponer las credenciales de usuario en la red a través de un hash lm débil, las credenciales de inicio de sesión de usuario solo se usan si una o ambas de las siguientes condiciones son verdaderas:
- El autor de la llamada solicitó el uso de SSL y usó el miembro ServerCertificateSubject . Este escenario garantiza que las credenciales están protegidas en tránsito y en el destino final, incluso si se usa un hash débil.
- La clave lncompatibilitylevel se establece en 2 o superior. Esto hace que el proveedor de seguridad NTLM emita o responda solo al hash NT seguro, no al hash lm débil. Además, se recomienda a los clientes que usen el nivel 3 o superior, lo que intentará NTLMv2.
Requisitos
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Encabezado | rpcdce.h (include Rpc.h) |
Consulte también
RPC_HTTP_TRANSPORT_CREDENTIALS
RPC_HTTP_TRANSPORT_CREDENTIALS_V3