estructura RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A (rpcdce.h)
La estructura de RPC_HTTP_TRANSPORT_CREDENTIALS_V3 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_V3 extiende RPC_HTTP_TRANSPORT_CREDENTIALS_V2 permitiendo el uso de formularios de credenciales arbitrarios.
Sintaxis
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;
Members
TransportCredentials
Puntero a un identificador de autenticación opaco en forma de estructura RPC_AUTH_IDENTITY_HANDLE .
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 actualmente no se admiten. Los autores de llamadas no deben especificarlos; si lo hace, se produce un error RPC_S_CANNOT_SUPPORT. Cada constante se puede especificar una vez. RPC no comprueba esta restricción por motivos de rendimiento, pero al especificar una constante más de una vez se generan resultados no definidos.
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 del 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 un identificador de autenticación opaco en forma de estructura RPC_AUTH_IDENTITY_HANDLE 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 se cumplen una o ambas condiciones:
- El autor de la llamada solicitó el uso de SSL y usó el miembro ServerCertificateSubject . Este escenario garantiza que las credenciales están protegidas tanto en tránsito como 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 7 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 R2 [solo aplicaciones de escritorio] |
Encabezado | rpcdce.h (incluir Rpc.h) |
Consulte también
RPC_HTTP_TRANSPORT_CREDENTIALS
RPC_HTTP_TRANSPORT_CREDENTIALS_V2