Compartir a través de


Especificar una autenticación distinta de Kerberos para proyectos de Visual Studio

En Visual Studio 2005, la configuración de algunos mecanismos de autenticación requieren una serie de pasos adicionales. Por ejemplo, la autenticación Kerberos requiere el registro del Nombre principal de servicio (SPN) y otros pasos relacionados. Para obtener más información, vea Registrar nombres principales de servicio de Kerberos mediante Http.sys.

En SQL Server 2005, los extremos HTTP configurados para utilizar la autenticación integrada pueden responder a los clientes utilizando Kerberos o NTLM como esquema de autenticación. El esquema real que seleccione y utilice el servidor, sea Kerberos o NTLM, se basa en el esquema que utilice el cliente al solicitar la autenticación. Para obtener más información, vea Tipos de autenticación de extremos.

En este tema encontrará información detallada para modificar un proyecto de Visual Studio 2005 de forma que la aplicación cliente de los servicios Web solicite un esquema de autenticación distinto de Kerberos cuando se seleccione la autenticación integrada como tipo de autenticación en el servidor.

Por lo general, al escribir una aplicación cliente en Visual Studio 2005 es necesario configurar las credenciales que se utilizarán con los Servicios Web XML nativos durante la implementación de SQL Server 2005. Si presuponemos que va a utilizar la autenticación integrada, podría utilizar un código similar al siguiente:

myServer.sql_endpoint proxy = new myServer.sql_endpoint();
proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Sin embargo, si la autenticación Kerberos no se configura correctamente para que funcione desde otros equipos (registro de SPN, etc.), Visual Studio 2005 intentará utilizar siempre Kerberos como esquema de autenticación, salvo que se deshabilite explícitamente Kerberos como esquema de autenticación permitido en el extremo HTTP (sql_endpoint), lo que se realiza seleccionando NTLM, BASIC o DIGEST como tipo de autenticación. Quizás desee especificar que Visual Studio 2005 utilice otro esquema compatible como, por ejemplo, NTLM.

El siguiente código muestra cómo anular el esquema de autenticación que utiliza Visual Studio 2005 y hacer que la aplicación cliente solicite el uso de NTLM como mecanismo de autenticación:

mattm1.sql_endpoint proxy = new mattm1.sql_endpoint();
System.Net.CredentialCache myCreds = new System.Net.CredentialCache();

myCreds.Add(new Uri(proxy.Url), "NTLM", System.Net.CredentialCache.DefaultCredentials.GetCredential(new Uri(proxy.Url), "NTLM"));
proxy.Credentials = myCreds;

Aunque puede forzar que Visual Studio 2005 utilice NTLM en lugar de Kerberos en un extremo en modo INTEGRATED mediante el ejemplo de código anterior, es recomendable crear un extremo configurado en modo AUTHENICATION=NTLM para que se utilice NTLM cuando no se puede usar Kerberos debido a problemas de SPN.

Requisitos de configuración adicionales para el entorno de desarrollo

Las modificaciones de código indicadas en la sección anterior permiten que la aplicación cliente especifique y utilice un esquema de autenticación distinto de Kerberos, pero se necesitan más tareas para asegurar la compatibilidad de la aplicación cuando ésta se ejecuta y prueba en el entorno de desarrollo.

Tenga en cuenta que de forma predeterminada, la función para agregar referencias Web en Visual Studio utiliza siempre Kerberos cuando intenta recuperar la respuesta WSDL del servicio Web. Para evitarlo, puede aplicar las siguientes soluciones:

  1. Configure la autenticación Kerberos correctamente para el entorno de desarrollo. Esto supone registrar los SPN de Kerberos como un solo usuario o, si corresponde, para un grupo de dominios de programadores. Para obtener más información, vea Registrar nombres principales de servicio de Kerberos mediante Http.sys.

  2. Deshabilite Kerberos temporalmente en el extremo. Si utiliza el siguiente procedimiento ALTER ENDPOINT para cambiar al modo DIGEST, obtendrá la respuesta WSDL correcta.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Agregue la referencia Web al proyecto de Visual Studio 2005.

  4. Vuelva a cambiar el extremo al modo INTEGRATED como se indica a continuación:

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

También podría hacerlo de la siguiente manera:

  1. Obtenga la respuesta WSDL mediante otro mecanismo como, por ejemplo, Internet Explorer y luego guárdela en un archivo.
  2. Agregue la referencia Web de Visual Studio del archivo en lugar de la URL, como http://MyServer/sql_endpoint?wsdl.

Vea también

Referencia

Establecer el servidor para que escuche solicitudes de servicios Web XML nativos

Otros recursos

CREATE ENDPOINT (Transact-SQL)
ALTER ENDPOINT (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005