Pessoal e possível transferir o usuário de uma aplicação para outra através de cookie ?
alguém tem um exemplo de fazer isso ?
Pessoal e possível transferir o usuário de uma aplicação para outra através de cookie ?
alguém tem um exemplo de fazer isso ?
Thiago, segue abaixo
Grava o Cookie
/FacesContext
FacesContext context = FacesContext.getCurrentInstance();
//Cria cookie
Cookie ck = new Cookie("cookie", "Valor que vc quer Setar/Receber do Cookie");
ck.setMaxAge(-1); //tempo de vida
//Adiciona
((HttpServletResponse) context.getExternalContext().getResponse()).addCookie(ck);
Ler o Cookie
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest)facesContext.getExternalContext().getRequest();
//obtem a lista de cookies
Cookie[] cookies = request.getCookies();
//foreach
for(Cookie cookie : cookies){
if(cookie.getName().trim().equalsIgnoreCase("cookie")){
System.out.println("Valor do cookie: "+cookie.getValue());
}
}
Posso estar errado, mas o cookie inserido por um servidor, fica disponível apenas para aquele servidor não?
Não seria uma possibilidade enviar via URL um pedido de login para a outra aplicação? Utilizando criptografia claro.
utilizar cookie para isso significa que a segurança da sua app
vai ser zero…
essa não é a melhor maneira de se fazer isso
cookie tem outra finalidade para isso não se aplica
a não ser que seja para estudo…
RoxRicardo como que posso pegar o usuário na URL ?
Estava vendo que com o Jboss tem um sessionID que poderia fazer isso mas não achei nada que me ajudasse,
alguém poderia dar um exemplo ? ou alguma outra solução que consigo fazer o que preciso ?
Fora que se usar cookie em dispositivos como celular/tablet não rola (principalmente Apple),
As opções são sessão na aplicação, sessão no banco ou os dois juntos.
[quote=thiagoRibeiro]RoxRicardo como que posso pegar o usuário na URL ?
Estava vendo que com o Jboss tem um sessionID que poderia fazer isso mas não achei nada que me ajudasse,
alguém poderia dar um exemplo ? ou alguma outra solução que consigo fazer o que preciso ?[/quote]
Olá Thiago, aqui em meu trabalho recentemente tive essa necessidade, a intenção era que ao se logar com um usuário em um sistema, fosse possível acessar um outro sistema sem necessidade de login.
Neste caso os dois sistemas tinham o cadastro do usuário e ambos com a mesma senha, onde o sistema 1 era a porta de entrada e existiam links para o sistema 2, assim ao clicar no link para o sistema 2 era passado como parâmetro na URL tanto o login do usuário quanto a senha criptografada em MD5.
No sistema 2 existia um filtro para interceptar uma requisição de login, assim o sistema 2 pegava o login do usuário, fazia uma consulta em sua base e gerava o MD5 da senha naquele sistema, se as senhas forem iguais o sistema permite o login.
Entretanto esta é uma solução que se encaixa perfeitamente pra mim e muito pouco provavelmente pra você, se pudesse explicar qual o seu problema, situação dos dois sistemas, como esse acesso vai acontecer talvez possamos ajudar melhor.
Sugestão, se for realizar o controle de usuários em diferentes aplicativos, uma boa idéia é usar OpenLDAP
RoxRicardo,
o que preciso e exatamente isso que vc já fez,
Tenho um sistema A que valida o usuário do AD (active direct) validado o usuário no sistema A a pagina para para o menu,
no menu qualquer opção que o usuário escolhe ele e redirecionado para o sistema B,
e preciso pegar o usuário que foi validado no sistema A e recuperar no Sistema B,
como faço isso usando a solução que vc já implementou ?
alcionj
Não achei a solução do site que vc me passou ?
e apenas umas referencia do que posso usar ou tem algo lá que posso implementar ?
[quote=thiagoRibeiro]RoxRicardo,
o que preciso e exatamente isso que vc já fez,
Tenho um sistema A que valida o usuário do AD (active direct) validado o usuário no sistema A a pagina para para o menu,
no menu qualquer opção que o usuário escolhe ele e redirecionado para o sistema B,
e preciso pegar o usuário que foi validado no sistema A e recuperar no Sistema B,
como faço isso usando a solução que vc já implementou ?[/quote]
Consegue fazer como já implementei, mas no seu ambiente, como está validado no AD ti aconselho a API ou pode tentar o OpenLDAP conforme falado pelo @alcionj.
OpenLDAP nunca utilizei mas em um ambiente onde tudo era AD já utilizei o JCIFS para consultar se um determinado usuário já estava logado no AD.
RoxRicardo,
eu tentei o OpenLDAP mas não consegui evoluir, estou usando o Jboss 7, nele tenho um arquivo de configuração o standalone.xml nele adicionei a configuração abaixo,
em meu sistema criei um arquivo jboss-web.xml e acrescentei isso
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>java:/jaas/my_ldap_security_domain</security-domain>
</jboss-web>
Mas dai não sei como eu poderia pegar o usuário conforme a configuração no standalone.xml
<security-domain name="my_ldap_security_domain" cache-type="default">
<authentication>
<login-module code="Remoting" flag="optional">
<module-option name="password-stacking" value="useFirstPass"/>
</login-module>
<login-module code="LdapExtended" flag="required">
<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
<module-option name="java.naming.provider.url" value="ldap://00.00.0.000:389"/>
<module-option name="java.naming.security.authentication" value="simple"/>
<module-option name="baseCtxDN" value="dc=AAAA-AAAAA,dc=com,dc=br"/>
<module-option name="baseFilter" value="(uid={0})"/>
<module-option name="roleFilter" value="(member={1})"/>
<module-option name="roleAttributeID" value="cn"/>
<module-option name="throwValidateError" value="true"/>
<module-option name="searchScope" value="ONELEVEL_SCOPE"/>
</login-module>
</authentication>
</security-domain>
vc consegue me ajudar com essa solução que comecei ou até mesmo com a que vc me indicou JCIFS
Bom, pra começar se você vai realmente fazer uma integração LDAP você precisa dos dados de acesso ao mesmo,
java.naming.provider.url - Endereço e porta do AD;
java.naming.security.authentication - Tipo de autenticação;
baseCtxDN - Domínio de busca
Talvez na api do OpenLDAP vc consiga o que cada um é e exemplos de como preencher, no JCIFS não é muito diferente disso não. Tenha em mente que integrações com servidor LDAP requerem um servidor LDAP online (o que parece obvio mas algumas pessoas se esquecem).
As informações de IP, domínio etc… eu tenho, o que preciso e ajustar o q fiz ou refazer caso esteja errado,
tem alguma sugestão para eu implementar ?
Ninguém tem alguma sugestão ?