Share via


estructura RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W (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 amplía RPC_HTTP_TRANSPORT_CREDENTIALS al permitir la autenticación en un servidor proxy HTTP.

Sintaxis

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;

Miembros

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.

Valor Significado
RPC_C_HTTP_FLAG_USE_SSL
Indica a RPC que use SSL para comunicarse con el proxy RPC.
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
Cuando se establece, RPC elige el primer esquema de la matriz AuthnSchemes e intenta autenticarse en el proxy RPC. Si el proxy RPC no admite el esquema de autenticación seleccionado, se produce un error en la llamada. Cuando no se establece, el cliente RPC consulta el proxy RPC para ver los esquemas de autenticación admitidos y elige uno.

AuthenticationTarget

Especifica el destino de autenticación.

Debe establecerse en uno o ambos de los valores siguientes:

Valor Significado
RPC_C_HTTP_AUTHN_TARGET_SERVER
Autentíquese en el proxy RPC, que es el servidor HTTP desde una perspectiva HTTP. Este es el valor más común.
RPC_C_HTTP_AUTHN_TARGET_PROXY
Autentíquese en el proxy HTTP. Este valor es poco frecuente.

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 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 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.
Si se usa la versión Unicode de la función RpcBindingSetAuthInfoEx , también se deben proporcionar las versiones Unicode de la RPC_HTTP_TRANSPORT_CREDENTIALS_V2 y las estructuras de SEC_WINNT_AUTH_IDENTITY , y el miembro Flags de TransportCredentials debe establecerse en SEC_WINNT_AUTH_IDENTITY_UNICODE. Si se usa la versión ANSI de la función RpcBindingSetAuthInfoEx , se deben proporcionar versiones ANSI de RPC_HTTP_TRANSPORT_CREDENTIALS_V2 y estructuras de SEC_WINNT_AUTH_IDENTITY , y el miembro Flags de TransportCredentials debe establecerse en SEC_WINNT_AUTH_IDENTITY_ANSI.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado rpcdce.h (incluir Rpc.h)

Consulte también

Nombres principales

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

Llamadas de procedimiento remoto con RPC sobre HTTP

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY