| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/02/2008 11:21:05
|
souzatg
HelloWorld
Membro desde: 17/05/2006 10:01:08
Mensagens: 11
Localização: São Paulo SP
Offline
|
Olá pessoal, boa tarde!
Estou precisando de uma ajudinha dos Gurus hehe...
Preciso desenvolver um módulo de Login JAAS que irá autenticar usando um Web Service que trabalha com o repositório central de SSO. O problema que tenho é que o mesmo recebe como parâmetro (não sei por qual motivo, mas enfim) o IP da máquina cliente que está tentando se autenticar, assim como o domínio e o usuário que esta Workstation está logada na Rede Windows (Active Directory), ou seja, dentro do método login() do LoginModule customizado eu tenho que encontrar o IP, usuário e domínio da estação que está tentando entrar.
Isto é possível? Existe algum jeito de saber quais estes dados através do LoginModule, ou até fazer um "bacalhau" usando um Filter ou coisa parecida? Apesar que se possível eu prefiro manter a idéia de usar JAAS ao invés de um Filter, para usar o padrão de mercado e facilitar a plugabilidade né...
Agradeço desde já!
Abraços!
This message was edited 1 time. Last update was at 12/02/2008 12:50:02
|
Thiago Souza
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/03/2008 19:04:08
|
Sokoban
Thread.start()
![[Avatar]](/images/avatar/45ebd93b65d907b7f84545b9aed9af8f.png)
Membro desde: 18/12/2006 11:53:53
Mensagens: 43
Offline
|
Estou com um problema muito parecido, só que ao invés de precisar mandar o IP do cara como parâmetro, eu preciso passar o SessionID.
Pelo visto é necessário implementar um novo CallBack para o terceiro parâmetro na mão...
Mas o que mais além disso precisa ser feito ?
Alguem aí tem alguma idéia de como adicionar parâmetros extras na autenticação do JAAS ?
This message was edited 2 times. Last update was at 14/03/2008 13:52:57
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2008 08:36:41
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
não entendi muito bem qual seria o problema... loginmodules podem ser fabricados. basta implementar um.
Quanto ao ip basta usar InetAdress . Cuidado com o 127.0.0.1 que sempre existe.
Quando ao sessionID, sessionID do quê ? do servidor web ? Vc pode pegar usando o session. Para fazer isso dentro do loginmodule vc previsa de uma ginastica. implemente um session listener que o informa quando as sessções são criadas e destruidas. Um objeto deve ouvir isso. o login module deve consultar esse objeto. O problema tlv seja saber qual id pertence a qual module de login. sem mais detalhes é complicado saber...
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2008 14:40:26
|
Sokoban
Thread.start()
![[Avatar]](/images/avatar/45ebd93b65d907b7f84545b9aed9af8f.png)
Membro desde: 18/12/2006 11:53:53
Mensagens: 43
Offline
|
sergiotaborda wrote:não entendi muito bem qual seria o problema... loginmodules podem ser fabricados. basta implementar um.
Quanto ao ip basta usar InetAdress . Cuidado com o 127.0.0.1 que sempre existe.
Quando ao sessionID, sessionID do quê ? do servidor web ?
Seguinte, aparentemente tanto eu quanto o usuário souzatg precisamos enviar um parâmetro a mais para o LoginModule.
E essa é a dúvida comum à ambos.
Agora, a razão de eu precisar fazer isto é o seguinte (espero não atrapalhar o tópico com minha dúvida, qualquer coisa me dêem um toque que eu abro em um tópico diferente):
Estou tendo o velho e famigerado "The requested resource (/.../j_security_check) is not available", várias vezes relatado por usuários deste fórum:
http://www.guj.com.br/posts/list/18712.java
http://www.guj.com.br/posts/list/51388.java#270556
http://www.guj.com.br/posts/list/47813.java#249931
http://www.guj.com.br/posts/list/64193.java#337494
http://www.guj.com.br/posts/list/14529.java#75657
Já vimos que o erro acontece quando um usuário tenta fazer uma requisição de login quando já existe aquele Session ID logado.
Para repoduzí-lo, por exemplo, basta abrir duas páginas de login em duas abas do mesmo browser, logar em uma, e em seguida tentar logar na segunda tela - com qualquer usuário e senha (isso não importa já que o erro acontece antes da validação que acontece dentro LoginModule).
Já que não há como consertar o erro (problemas estruturais do sr.tomcat), então o jeito é evitar que ele aconteça.
Vc pode pegar usando o session. Para fazer isso dentro do loginmodule vc previsa de uma ginastica. implemente um session listener que o informa quando as sessções são criadas e destruidas. Um objeto deve ouvir isso. o login module deve consultar esse objeto.
Eu já fiz isso! Mas dessa forma não funciona.
Eu só posso adicionar uma sessão uma vez que o login foi realmente feito com sucesso (dentro do LoginModule). E lá eu não tenho acesso ao objeto Request ou nada parecido que possa me informar o SessionID daquele Usuário.
O problema tlv seja saber qual id pertence a qual module de login. sem mais detalhes é complicado saber...
Exatamente, por isso que eu preciso ter controle das sessões efetivamente LOGADAS no sistema (que já fizeram o request de autenticação).
Saber apenas quais são as sessões criadas não ajuda muito.
Desta forma, eu preciso passar esse SessionID de alguma forma lá pra dentro do LoginModule.
Alguma idéia ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2008 16:36:47
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Sokoban wrote:
Seguinte, aparentemente tanto eu quanto o usuário souzatg precisamos enviar um parâmetro a mais para o LoginModule.
Como eu disse não use o LoginModule padrão. Crie o seu.
O problema tlv seja saber qual id pertence a qual module de login. sem mais detalhes é complicado saber...
Exatamente, por isso que eu preciso ter controle das sessões efetivamente LOGADAS no sistema (que já fizeram o request de autenticação).
Saber apenas quais são as sessões criadas não ajuda muito.
Desta forma, eu preciso passar esse SessionID de alguma forma lá pra dentro do LoginModule.
Alguma idéia ?
não sei se ajuda
http://roneiv.wordpress.com/2008/02/18/jaas-authentication-mechanism-is-it-possible-to-force-j_security_check-to-go-to-a-specific-page/
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2008 13:37:17
|
Giovani MacDonald
Smalltalk
Membro desde: 11/07/2008 12:13:43
Mensagens: 3
Offline
|
Alguém resolveu esse problema?
Eu uso um LoginModule meu (ou seja, a ultima solução proposta nesse tópico não é suficiente pra mim) só que eu preciso pegar o IP do cliente, se eu tivesse um request seria fácill (com um request.getRemoteAddr()). O problema é que o LoginModule não recebe um request, também não consegui achar onde ele pega o valor do text field lá do form pelo request, afinal em algum lugar ele tem que fazer isso. Cheguei a dar uma olhada, pensei em criar um Callback só pra isso (um chute) e não cheguei a lugar nenhum.
Alguém tem alguma sugestão?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/08/2008 16:53:44
|
fre_d
Java Ninja
Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline
|
Já fiz isso. Eu uso o jboss e só funciona nas ultimas versões 4.x.x. No momento estou fora do meu computador assim que eu puder posto a solução.
Abraço,
Fred
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/08/2008 18:22:20
|
fre_d
Java Ninja
Membro desde: 13/06/2007 17:42:02
Mensagens: 259
Localização: Lages - SC
Offline
|
import javax.security.jacc.PolicyContext;
try {
request = (HttpServletRequest)PolicyContext.getContext("javax.servlet.http.HttpServletRequest");
} catch (PolicyContextException e) {
throw new LoginException(e.getMessage());
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/08/2008 12:25:00
|
Giovani MacDonald
Smalltalk
Membro desde: 11/07/2008 12:13:43
Mensagens: 3
Offline
|
Perfeito, valeu!
|
|
|
 |
|
|