none
Logar no sqlserver com Windows Authentication em aplicacao web java RRS feed

  • Pergunta

  • Caros colegas, estou com o seguinte problema: temos nossas aplicacoes web desenvolvidas no frameword VRaptor, rodando em um servidor Glassfish. Atualmente cada usuário do sistema possui um login criado no Sql Server, sendo que este login é usado para se autenticar no sistema e conectar no banco de dados. Gostaríamos de utilizar, ao invés do login do sqlserver, usar o login do windows para autenticar os usuários. Isso seria tranquilo se o sistema fosse desktop, mas para um sistema web, como posso fazer isso?

    Obrigado :)

    • Movido Gustavo Maia Aguiar segunda-feira, 16 de maio de 2011 12:47 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 13 de maio de 2011 18:28

Respostas

  • Configurando o JDBC no NetBeans para conexões com SQL Server 2005

    1 - Baixar o arquivo sqljdbc_3.0 do caminho: http://msdn.microsoft.com/data/jdbc (Descompacte o arquivo em C:/Arquivos de Programas/JDBC SQL Server 2005)

    2 - Criar um projeto no NetBeans

    3 - Clicar com o botão direito na pasta biblioteca (Localizada na pasta do seu projeto) pelo NetBeans

    4 - Selecionar a opção Adicionar JAR/Pasta

    5 - Localize o arquivo sqljdbc4.jar no caminho: C:/Arquivos de Programas/JDBC SQL Server 2005/sqljdbc_3.0/enu/

    6 - Selecione o arquivo e clique em Open Você terá referenciado o arquivo com o jar para sua aplicação.

    Você deverá também configurar o SQL Server para que aceite conexões TCP/IP

    1 - Vá em Iniciar/Programas/Microsoft SQL Server 2005/Configuration Tools/SQL Server Configuration Manager

    2 - Expanda o item "SQL Server 2005 Network Configuration"

    3 - Selecione "Protocols for SQLEXPRESS"

    4 - Clique duas vezes sobre TCP/IP

    5 - Na janela que aparecer altere a propriedade "Enabled" de "No" para "Yes"

    6 - Clique em OK

    7 - Reinicie o computador

    Tendo isso feito sua aplicação só precisará de uma string de conexão válida. Seque o código abaixo de um exemplo de conexão com login e senha:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    SQLServerDataSource dataSource = new SQLServerDataSource();

    dataSource.setIntegratedSecurity(false);

    //<<<< Será utilizado para que a conexão seja feita com login e senha

    dataSource.setServerName("Nome do Servidor");

    dataSource.setDatabaseName("Nome da sua Base de Dados");

    dataSource.setUser("Usuário");

    dataSource.setPassword("Senha");

    A segurança integrada do SQL Server (ou Windows Authentication) poderá ser utilizada seguindo os passos abaixo:

    1 - Va para a pasta C:/Arquivos de Programas/JDBC SQL Server 2005/sqljdbc_3.0/enu/auth/

    2 - Nessa pasta você encontrará outras três (IA64, x64, x86) onde cada conterá uma dll diferente dependedo do tipo do seu processador

    3 - Para verificador o seu processador clique o botão com logo do Windows que chamarei de "win" mais o botão "pause break" - win + pausebreak

    4 - A tela de configurações do seu computador aparecerá

    5 - No item "Tipo de Sistema" conterá o tipo do seu processador (x32 - Pasta "x86" ,x64 - Pasta "x64" ,xIA64 - Pasta "IA64")

    6 - Quando você descobrir qual o tipo do processador, entre na pasta adequada e copie a DLL "sqljdbc_auth.dll"

    7 - Vá em C:/Windows/System32 e cole a DLL

    8 - Reinicie o computador Tendo isso feito você terá a DLL que permitirá a conexão com autenticação do Windows

    Aí vai um exemplo de código com segurança integrada:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    SQLServerDataSource dataSource = new SQLServerDataSource();

    dataSource.setIntegratedSecurity(true);

    //<<<< Será utilizado para que a conexão seja feita sem login e senha

    dataSource.setServerName("LEANDRO-PC\\SQLEXPRESS");

    dataSource.setDatabaseName("LocacaoCarro");

    Assim você poderá conectar suas aplicações java com o SQL Server 2005.

    Espero ter ajudado.

    C ya =X~;

    • Marcado como Resposta Richard Juhasz segunda-feira, 6 de junho de 2011 20:34
    terça-feira, 17 de maio de 2011 21:59

Todas as Respostas

  • Boa Tarde,

    Considerando que o servidor não é um IIS, é bem complicado que a página recupere o token do usuário e o utilize para repassar a credencial. Não sou especialista no mundo Java, mas ainda não vi nenhuma implementação que se utiliza de autenticação integrada sem plugins pagos e proprietários.

    Uma alternativa seria usar um usuário único para conexão ao banco e um tabela de usuários para validar a conectividade. Além de mais flexível, permitirá que você usufrua de um pool de conexões que não é possível quando se utiliza usuários distintos. Ainda que você use a autenticação integrada, com o tempo, cada usuário conectando-se você terá problemas para escalar o servidor Web em virtude dessa característica.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com 


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Nakane sábado, 14 de maio de 2011 14:15
    sexta-feira, 13 de maio de 2011 18:34
  • Então, Gustavo. Essa foi uma alternativa que consideramos. 

    O problema é que gostaríamos de continuar com os usuários distintos no próprio servidor de banco, devido à auditoria. O SQL Server 2008 traz um esquema bacana de auditoria nativa. Se usarmos um usuário único, todas as operações nos BDs constarão como sendo de um único usuário. Na verdade esse é o único impedimento que temos atualmente. É claro que temos a opção de implementar auditoria através de trigger (aliás, já temos isso implementado), mas acreditamos que a auditoria nativa seria uma opção mais segura de auditoria.

    Mas como você disse, acho que é bem complicado mesmo.

    Provável que teremos que seguir por esse caminho.

     

    Obrigado por sua resposta.

    segunda-feira, 16 de maio de 2011 13:34
  • Configurando o JDBC no NetBeans para conexões com SQL Server 2005

    1 - Baixar o arquivo sqljdbc_3.0 do caminho: http://msdn.microsoft.com/data/jdbc (Descompacte o arquivo em C:/Arquivos de Programas/JDBC SQL Server 2005)

    2 - Criar um projeto no NetBeans

    3 - Clicar com o botão direito na pasta biblioteca (Localizada na pasta do seu projeto) pelo NetBeans

    4 - Selecionar a opção Adicionar JAR/Pasta

    5 - Localize o arquivo sqljdbc4.jar no caminho: C:/Arquivos de Programas/JDBC SQL Server 2005/sqljdbc_3.0/enu/

    6 - Selecione o arquivo e clique em Open Você terá referenciado o arquivo com o jar para sua aplicação.

    Você deverá também configurar o SQL Server para que aceite conexões TCP/IP

    1 - Vá em Iniciar/Programas/Microsoft SQL Server 2005/Configuration Tools/SQL Server Configuration Manager

    2 - Expanda o item "SQL Server 2005 Network Configuration"

    3 - Selecione "Protocols for SQLEXPRESS"

    4 - Clique duas vezes sobre TCP/IP

    5 - Na janela que aparecer altere a propriedade "Enabled" de "No" para "Yes"

    6 - Clique em OK

    7 - Reinicie o computador

    Tendo isso feito sua aplicação só precisará de uma string de conexão válida. Seque o código abaixo de um exemplo de conexão com login e senha:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    SQLServerDataSource dataSource = new SQLServerDataSource();

    dataSource.setIntegratedSecurity(false);

    //<<<< Será utilizado para que a conexão seja feita com login e senha

    dataSource.setServerName("Nome do Servidor");

    dataSource.setDatabaseName("Nome da sua Base de Dados");

    dataSource.setUser("Usuário");

    dataSource.setPassword("Senha");

    A segurança integrada do SQL Server (ou Windows Authentication) poderá ser utilizada seguindo os passos abaixo:

    1 - Va para a pasta C:/Arquivos de Programas/JDBC SQL Server 2005/sqljdbc_3.0/enu/auth/

    2 - Nessa pasta você encontrará outras três (IA64, x64, x86) onde cada conterá uma dll diferente dependedo do tipo do seu processador

    3 - Para verificador o seu processador clique o botão com logo do Windows que chamarei de "win" mais o botão "pause break" - win + pausebreak

    4 - A tela de configurações do seu computador aparecerá

    5 - No item "Tipo de Sistema" conterá o tipo do seu processador (x32 - Pasta "x86" ,x64 - Pasta "x64" ,xIA64 - Pasta "IA64")

    6 - Quando você descobrir qual o tipo do processador, entre na pasta adequada e copie a DLL "sqljdbc_auth.dll"

    7 - Vá em C:/Windows/System32 e cole a DLL

    8 - Reinicie o computador Tendo isso feito você terá a DLL que permitirá a conexão com autenticação do Windows

    Aí vai um exemplo de código com segurança integrada:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

    SQLServerDataSource dataSource = new SQLServerDataSource();

    dataSource.setIntegratedSecurity(true);

    //<<<< Será utilizado para que a conexão seja feita sem login e senha

    dataSource.setServerName("LEANDRO-PC\\SQLEXPRESS");

    dataSource.setDatabaseName("LocacaoCarro");

    Assim você poderá conectar suas aplicações java com o SQL Server 2005.

    Espero ter ajudado.

    C ya =X~;

    • Marcado como Resposta Richard Juhasz segunda-feira, 6 de junho de 2011 20:34
    terça-feira, 17 de maio de 2011 21:59