GARANTIR DESCONTO

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

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

29/09/2009

Dyego Carmo

Bom dia !

Dentro de qualquer Bean JSF voce acessa assim:

FacesContext.getExternalContext().getRequest().getRemoteUser();

Teste e me avise !

Responder

Gostei + 0

29/09/2009

Euclides Filizola

Bom dia, eu irei testar daqui a pouco. Logo irei te dar um retorno. Abraços.
Responder

Gostei + 0

30/09/2009

Dyego Carmo

Certo ?

Responder

Gostei + 0

30/09/2009

Euclides Filizola

Então deixa eu ver se eu entendi. 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");*/ @SuppressWarnings("unused") private String getUniqueToken(final FacesContext facesContext) { HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest(); return request.getSession().getId(); } public UsuarioMB() { } public void setUsuario(Usuario usuario){ this.usuario = usuario; } public Usuario getUsuario(){ return usuario; } } É isso ?
Responder

Gostei + 0

30/09/2009

Dyego Carmo

Se isto for um ManagedBean eh para funcionar...

Responder

Gostei + 0

30/09/2009

Euclides Filizola

É um ManagedBean, porém não estou conseguindo testar. Aqui vai meu bean completo. 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");*/ @SuppressWarnings("unused") private String getUniqueToken(final FacesContext facesContext) { HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest(); return request.getSession().getId(); } public UsuarioMB() { } public void setUsuario(Usuario usuario){ this.usuario = usuario; } public Usuario getUsuario(){ return usuario; } public UsuarioDAO getDao() { return dao; } ... Mas não estou conseguindo fazer funcionar.
Responder

Gostei + 0

30/09/2009

Dyego Carmo

Qual erro que dá ?

Responder

Gostei + 0

30/09/2009

Euclides Filizola

com.sun.faces.mgbean.ManagedBeanCreationException: Não foi possível criar o managed bean usuarioMB. Os seguintes problemas foram encontrados: - A propriedade uniqueToken para o managed bean usuarioMB não existe.
Responder

Gostei + 0

30/09/2009

Dyego Carmo

request.getRemoteUser() retorna o q ?
Responder

Gostei + 0

30/09/2009

Dyego Carmo

aonde que esta especificado este "uniqueToken" no seu projeto ?

Crie ele se for o caso... e coloque um getter e um setter !

Responder

Gostei + 0

30/09/2009

Euclides Filizola

Eu estou tentando chamar assim.

E da o seguinte erro: SEVERE: Servlet.service() for servlet Faces Servlet threw exception com.sun.faces.mgbean.ManagedBeanCreationException: Não foi possível criar o managed bean usuarioMB. Os seguintes problemas foram encontrados: - A propriedade uniqueToken para o managed bean usuarioMB não existe. Porém, aqui está meu faces.config usuarioMB br.gov.ce.srh.siscontv.MB.UsuarioMB session uniqueToken java.lang.String ... E agora ?
Responder

Gostei + 0

30/09/2009

Dyego Carmo

Criou GET E SET para esse uniqueToken ?

Responder

Gostei + 0

30/09/2009

Euclides Filizola

Ele é um método com parametro.

private String UniqueToken( FacesContext facesContext) {
            HttpServletRequest request = (HttpServletRequest) facesContext.getExternalContext().getRequest();
            return request.getRemoteUser();
          }

Tem algum problema ?
Responder

Gostei + 0

30/09/2009

Dyego Carmo



faca assim:


private String uniqueToken;

public void setUniqueToken(String token) {

uniqueToken = token;

}

public String getUniqueToken() {

return uniqueToken;

}

e teste.;
Responder

Gostei + 0

30/09/2009

Euclides Filizola

Não retorna nada.

        <h:outputText value="#{usuarioMB.uniqueToken}"  />
   

É assim que eu estou tentando chamar.
Responder

Gostei + 0

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

Aceitar