Fórum Pegar o usuario logado na rede utilizando NTLM com request.getRemoteUser(); utilizando JSF #9615

28/09/2009

0

Boa tarde pessoal da DevMedia, eu andei pesquisando ae uma forma de capturar o usuario logado pela rede, e vi que posso pegar via NTLM. Ou melhor, a forma em que está estruturada a rede aqui vai ser essa forma, pois além de ter o AD num Win Server 2003, temos um servidor linux com o SMB. E então eu preciso pegar o usuario logado pelo SMB.

O que eu preciso é pegar o login do usuario que está logado na rede, para poder então dar um nível de acesso, ou seja, é como uma intranet, onde o usuario apenas abre o browser e já está logado, com nível de acesso e tudo.


Dae eu li várias coisas e até o momento só consegui isso:

colocar dentro do meu web.xml os seguintes codigos:

<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>

<init-param>
<param-name>jcifs.netbios.wins</param-name>
<param-value>172.31.128.21</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>my domain.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.username</param-name>
<param-value>userName</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.password</param-name>
<param-value>Password</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

mas o problema é que:

Não sei onde eu irei utilizar o request.getRemoteUser(); pois estou utilizando JSF com JPA.

Alguém poderia me ajudar ?
Euclides Filizola

Euclides Filizola

Responder

Posts

30/09/2009

Henrique Weissmann

Olá,

você pode acessar a sua instância de HttpServletRequest tal como no exemplo abaixo:

      
        FacesContext contextoFaces = FacesContext.getCurrentInstance();
        if (contextoFaces == null || contextoFaces.getExternalContext() == null || contextoFaces.getExternalContext().getRequest() == null)
            return null;
        return (HttpServletRequest) contextoFaces.getExternalContext().getRequest();

Responder

Gostei + 0

30/09/2009

Euclides Filizola

Ta, mas eu coloco isso dentro de uma classe, ou dentro de uma pagina de apresentação, como uma xhtml ? Ou seja, eu crio um Bean e utilizo ele dentro de um xhtml, ou eu coloco dentro do próprio xhtml. ?
Responder

Gostei + 0

30/09/2009

Henrique Weissmann

No caso, você deve utilizar esta classe dentro de um managed bean do JSF, pois assim será mais fácil reutilizar estas informações dentro da sua aplicação, além disto, se trata de uma informação que diz respeito à camada de controle dentro do padrão MVC.
Responder

Gostei + 0

30/09/2009

Euclides Filizola

Ta, deixa eu ver se eu entendi então. Eu tenho o bean Usuario abaixo: package br.gov.ce.srh.siscontv.MB; import br.gov.ce.srh.siscontv.model.DAO.*; import entity.Usuario; public class UsuarioMB implements java.io.Serializable { private static final long serialVersionUID = 1L; private final UsuarioDAO dao = new UsuarioDAO(); private Usuario usuario = new Usuario(); String login = System.getProperty("user.name"); public UsuarioMB() { } public void setUsuario(Usuario usuario){ this.usuario = usuario; } public Usuario getUsuario(){ return usuario; } } Dae, no lugar de colocar " System.getProperty("user.name"); eu utilizo. FacesContext.getExternalContext().getRequest().getRemoteUser(); ? Se eu quiser pegar o login do "RemoteUser", como eu farei?
Responder

Gostei + 0

30/09/2009

Devmedia

chamado resolvido com o consultor Dyego
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar