Compartilhar via


Especificando uma autenticação diferente de Kerberos para projetos do Visual Studio

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

No Visual Studio 2005, a configuração de alguns mecanismos de autenticação requer etapas adicionais. Por exemplo, a autenticação Kerberos requer o registro do SPN (Nome da Entidade de Serviço) e outras etapas relacionadas. Para obter mais informações, consulte Registrando nomes da entidade de serviço Kerberos usando Http.sys.

Os pontos de extremidade HTTP configurados para utilizar a autenticação Integrada podem responder aos clientes usando Kerberos ou NTLM como esquema de autenticação. O esquema real selecionado e utilizado pelo servidor, Kerberos ou NTLM, se baseia no esquema que o cliente utiliza para solicitar a autenticação. Para obter mais informações, consulte Tipos de autenticação de ponto de extremidade.

Este tópico fornece informações detalhadas sobre como modificar um projeto do Visual Studio 2005, de forma que o aplicativo cliente de serviços Web solicite um esquema de autenticação diferente de Kerberos quando a autenticação Integrada for selecionada como o tipo de autenticação no servidor.

Normalmente, ao escrever um aplicativo cliente no Visual Studio 2005, você deverá configurar as credenciais a serem usadas com os XML Web Services nativos na implementação do SQL Server. Pressupondo que utilize a autenticação Integrada, você poderia usar um código semelhante ao seguinte:

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

No entanto, se a autenticação Kerberos não for configurada corretamente para que funcione em outros computadores (registro do SPN etc.), o Visual Studio 2005 sempre tentará utilizar o Kerberos como esquema de autenticação, a menos que você desabilite o Kerberos explicitamente como esquema de autenticação permitido no ponto de extremidade HTTP (sql_endpoint), selecionando NTLM, BASIC ou DIGEST como tipo de autenticação. Convém especificar que o Visual Studio 2005 use outro esquema com suporte, como NTLM.

O código a seguir mostra como substituir o esquema de autenticação que o Visual Studio 2005 utiliza e fazer com que o aplicativo cliente solicite o uso do NTLM como mecanismo de autenticação:

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;

Ainda que você possa forçar o Visual Studio 2005 a usar o NTLM em vez do Kerberos em um ponto de extremidade INTEGRATED ao utilizar o exemplo de código anterior, é recomendável criar um ponto de extremidade configurado com AUTHENICATION=NTLM para que NTLM seja usado quando o Kerberos não puder ser usado devido a problemas de SPN.

Requisitos de configuração adicionais para o ambiente de desenvolvimento

As modificações de código indicadas na seção anterior permitem que o aplicativo cliente especifique e use um esquema de autenticação diferente de Kerberos, mas tarefas adicionais serão necessárias para dar suporte ao aplicativo quando ele estiver sendo executado e testado no ambiente de desenvolvimento.

Observe que, por padrão, a funcionalidade para adicionar referência da Web no Visual Studio sempre utiliza o Kerberos ao tentar recuperar a resposta WSDL do serviço Web. Para evitar isso, você pode aplicar as seguintes soluções alternativas:

  1. Configure a autenticação Kerberos corretamente para o ambiente de desenvolvimento. Isso envolve registrar os SPNs Kerberos como um único usuário ou, se aplicável, para um grupo de domínios de desenvolvedores. Para obter mais informações, consulte Registrando nomes da entidade de serviço Kerberos usando Http.sys.

  2. Desabilite o Kerberos temporariamente em seu ponto de extremidade. Usando o procedimento ALTER ENDPOINT a seguir para alternar para o modo DIGEST, você poderá obter a resposta WSDL correta.

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = DIGEST
    )
    
  3. Adicione a referência da Web ao projeto Visual Studio 2005.

  4. Alterne o ponto de extremidade novamente para a modo INTEGRATED da seguinte maneira:

    ALTER ENDPOINT endPointName
    AS HTTP (
       AUTHENTICATION = INTEGRATED
    )
    

Como alternativa, você pode seguir estas etapas:

  1. Recupere a resposta WSDL por meio de outro mecanismo, como usando o Internet Explorer e salvando a resposta WSDL em um arquivo.

  2. Adicione a referência da Web no Visual Studio do arquivo em vez como uma URL, como: http://MyServer/sql_endpoint?wsdl.