| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2011 14:51:33
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Pessoal,
Estou utilizando a seguinte propriedade para pegar o usuário logado no Windows:
public String usuario_sessao = System.getProperty("user.name");
Quando estou rodando a aplicação no eclipse ele retorna o login corretamente. Quando populo o .war no Tomcat ele retorna uma string chamada: SYSTEM.
Algém sabe como fazer isso funcionar direito?
This message was edited 2 times. Last update was at 24/05/2011 08:31:39
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2011 16:22:54
|
victorrseloy
HelloWorld
Membro desde: 03/02/2010 01:33:54
Mensagens: 14
Offline
|
Olá,
O que está acontecendo é o seguinte. Quando você roda a aplicação no eclipse, o usuário ao qual a VM fica associada é o seu usuário. Mas quando ela é rodada pelo tomcat, o usuário que inicia o tomcat e a VM(do ponto de vista do Windows) é um usuário interno do windows chamdo SYSTEM( se você abrir o gerenciador de tarefas, você verá que vários processos são rodados por esse usuário), quando você faz uma requisição de um computador qualquer para o seu servidor a VM( que está rodando no servidor), consulta o SO do servidor descobre quem é o usuário que instanciou ela, e devolve para você. Ou seja sempre que você tentar fazer System.getProperty("user.name") em um container j2ee rodando no windows, você vai obter a resposta "SYSTEM"
|
SCJP 6.0
-----------------------------------------
Victor Ribeiro da Silva Eloy |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/05/2011 18:45:34
|
rodrigo.ferreira
JavaGuru
![[Avatar]](/images/avatar/0d55e009fa8e9e8ec97aa091dfaa28e0.jpg)
Membro desde: 28/08/2008 20:38:07
Mensagens: 200
Offline
|
rfogo, boa noite! Tente isto: Abraço,
This message was edited 1 time. Last update was at 20/05/2011 18:47:15
|
Rodrigo Lopes Ferreira
Sun Certified Enterprise Architect for the Java Platform, Enterprise Edition 5
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Sun Certified Programmer for the Java 2 Platform, Standard Edition 5
Tecnólogo em Informática com Ênfase em Gestão de Negócios - FATEC - Mococa - SP
Pós Graduando em Desenvolvimento de Sistemas em Software Livre - Universidade Católica de Brasília |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/05/2011 07:21:28
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
rodrior e victor,
Obrigado pelas repostas, porém o infoSystem.getName() está retornando o mesmo usuário "SYSTEM".
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/05/2011 08:30:50
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Pessoal,
Sigo na busca por solução. Voltei meus esforços para o jcifs, parece que o mesmo funciona bem porém na nossa rede não tem compatibilidade pois o domínio solicita "security policy requires NTLMv2" que não é compatível mesmo com as versões mais recentes do jcifs.
Se alguém tiver alguma solução, estamos aí.....
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2011 08:33:17
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Pessoal,
Nada ainda, é impossível que não tenha uma solução para isso!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2011 10:00:45
|
leo.andven
JavaChild
Membro desde: 19/05/2011 10:33:50
Mensagens: 128
Offline
|
O que você, "de verdade"? Verificar o usuário que está acessando sua página, ou o usuário que está executando o processo do TOMCAT?
|
Você já leu seu Effective Java hoje?
--
Sim, eu posso voar!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/05/2011 20:51:55
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Tenho que identificar o usuario que acessou a pagina para que assim o mesmo possa logar na aplicacao! Quando uso o infoSystem.getName() ou System.getProperty("user.name"); rodando via o eclipse funciona porem quando faco o deploy no tomcat a aplicacao nao loga pois retorna o usuario "SYSTEM" .
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 07:55:23
|
joaosouza
JavaEvangelist
![[Avatar]](/images/avatar/d87ee98a9e01f8df5addf6065bf163e1.jpeg)
Membro desde: 14/08/2006 15:57:59
Mensagens: 331
Localização: São Paulo
Offline
|
Acredito que você possa adicionar uma página de Login, com campos de Login/Senha para preenchimento por parte do usuário da aplicação. Após isso vcoê armazena essas informações na sessão do usuário... Pois como o victorrseloy falou, a VM associada ao Container sempre terá o user SYSTEM no caso do Windows.
|
João Paraiso.
# The Future is Open !! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 08:04:49
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
João,
A minha intenção é que a aplicação não tenha essa tela de login. Porém se eu não encontrar solução para esse problema não vou ter como fugir disso!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 08:07:19
|
leo.andven
JavaChild
Membro desde: 19/05/2011 10:33:50
Mensagens: 128
Offline
|
Como o joaosouza respondeu, você vai precisar de uma página de login ou outro mecanismo para o usuário se identificar.
O System.getProperty("user.name") identifica o usuário do sistema que executa a máquina virtual. E não quem acessou a página.
Se você quer fazer integração entre o browser e o usuário logado do windows, sugiro tentar a biblioteca SPNEGO. Isso faz a integração entre o browser e o Windows.
The intent of this project is to provide an alternative library (.jar file) that application servers (like Tomcat) can use as the means for authenticating clients (like web browsers).
....
However, if your organization uses java based web/application servers, and you prefer Kerberos/SPNEGO instead of NTLM as the authentication protocol, and you would rather have a Java Servlet Filter (JSR-53) based implementation instead of a container specific authentication module (JSR-196), and you want SSO
(no username/password prompt), then this project may be of some interest to you.
|
Você já leu seu Effective Java hoje?
--
Sim, eu posso voar!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 09:06:31
|
joaosouza
JavaEvangelist
![[Avatar]](/images/avatar/d87ee98a9e01f8df5addf6065bf163e1.jpeg)
Membro desde: 14/08/2006 15:57:59
Mensagens: 331
Localização: São Paulo
Offline
|
Olá rfogo, blz ?
Entendi sua necessidade, porém do jeito que vocês está tentando implementar acredito que não dê certo...Uma alteranatica é tentar implementar uma solução como o leo.andven passou. Outra alternativa é tentar fazer esse tipo de integração integrada com o AD (Active Directory), pois ai você terá como recuperar pela sua aplicação o user logado no Domínio através do AD.
|
João Paraiso.
# The Future is Open !! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 09:07:18
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Na hora que o usuário acessa a aplicação ele dispara um método que verifica o usuário logado no windows. Com isso ele pega o usuário e verifica se existe esse usuário no banco. Se existir ele loga na aplicação se não gera uma mensagem de erro.
Esse SPNEGO faz isso?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 10:21:56
|
leo.andven
JavaChild
Membro desde: 19/05/2011 10:33:50
Mensagens: 128
Offline
|
SPNEGO faz mais que isso, ele (parece que) tenta autenticar contra um Kerberos também.
Eu nunca usei, mas o código dele mostra que ele cria um novo ServletRequest (SpnegoHttpServletRequest) que tem um método getRemoteUser() que retorna o usuário logado.
Eu diria que o que você quer está nesse pacote, tem só de configurar/adaptar para o que você quer...
|
Você já leu seu Effective Java hoje?
--
Sim, eu posso voar!! |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/05/2011 14:43:41
|
rfogo
JavaTeenager
Membro desde: 18/05/2010 22:04:36
Mensagens: 162
Offline
|
Será que não tem uma outra forma mais simples de fazer isso? Pesquisei um pouco sobre o SPNEGO e para eu chegar a usar o getRemoteUser() vai se uma longa caminhada até porque os exemplos que estudei trata a Autenticação com Kerberos.
|
|
|
 |
|
|