Pegar username com aplicação web (JSF) [RESOLVIDO]

nao, entendi errado…
Spring Security seria pra controles de acesso, já com o usuario, a partir de alguma entidade e nao pra pegar o usuario do sistema operacional…

neste caso nao sei mesmo, ainda mais pra sistema web

Agora que me atentei na sua questão, acredito que não seja possivel. Que eu tinha dito é possivel pegar o usuario logado no sistema, mas dai da maquina que a aplicação está rodando, no servidor, agora de algum acesso, duvido que seja possivel. Dá para pegar o ip, algumas outras informações do Request, agora o usuario logado na maquina que fez a requisição realmente duvido, mas não tenho certeza.

Putz, que bost…
=/

Eu sei que rola de fazer em ASP, pq um bixo aqui fez um sisteminha parecido.

Valeu galera. Qualquer coisa que eu conseguir eu posto aqui pra referências futuras
o/

Então, sei que o IIS (servidor da microsoft) consegue recuperar essas informações a partir da requisição, principalmente se for na intranet, agora algum servidor ( ou webcontainer) que rode java e tenha essa opção não conheço.

eu vi aqui que com um sys.out nas properties traz a informação, veja em negrito:

*lembrando que o windows não é case sentitive, use e USER é a mesma coisa.

– listing properties –

java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=ISO-8859-1
java.specification.version=1.7
user.name=dilnei
java.class.path=C:\Users\dilnei\Documents\NetBeansPro…
java.vm.specification.version=1.7
sun.arch.data.model=64
java.home=C:\Program Files\Java\jdk1.7.0_01\jre
sun.java.command=br.com.weblog.entity.Aluno
java.specification.vendor=Oracle Corporation
user.language=pt

Aix, se eu não estiver enganado, essas propriedades são da maquina onde o servidor se encontra, e ele precisa das informações do usuario que está acessando ela por um navegador, sendo um sistema web, desse usuario pelo navegador que acredito não ser possivel recuperar essas informações, mas nõa tenho certeza disso.

eu vi aqui que com um sys.out nas properties traz a informação, veja em negrito:

*lembrando que o windows não é case sentitive, use e USER é a mesma coisa.

– listing properties –

java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=ISO-8859-1
java.specification.version=1.7
user.name=dilnei
java.class.path=C:\Users\dilnei\Documents\NetBeansPro…
java.vm.specification.version=1.7
sun.arch.data.model=64
java.home=C:\Program Files\Java\jdk1.7.0_01\jre
sun.java.command=br.com.weblog.entity.Aluno
java.specification.vendor=Oracle Corporation
user.language=pt

[/quote]

Eu já fiz com sys.out msm.
Botei pra rodar, mas nesse user.name ele passa o user o qual o servidor tá rodando. Como eu to testando localmente, eu botei pra rodar e talz… aí acessei a aplicação pelo pc de um colega e apareceu o meu username

.<

Posta o código inteiro que isso pode responder a pergunta inicial e ser util para mim tb.

Isso foi pra mim?
hehehehehe

Código do que?
Eu não fiz nada disso ainda… tava tentando descobrir como faz.
Ou vc tá falando dessa parte do sys.out?

segue:


    public static void main(String args[]) {
        Properties props = System.getProperties();
        props.list(System.out);
    }

Aix, ai vc está fazendo uma aplicação desktop, ai sempre vai pegar as informações da maquina que está executando o jar, no caso dele é uma aplicação web, acessivel por um navegador, onde essas informações não vão estar disponiveis. Se ele fizer isso numa aplicação web, vai retornar a informações da maquina servidor.

verdade, to pensando se tem como injetar este comando pelo browser, via javaScript ( ainda não sei ) para executar na maquina cliente e me retonar o user.

Eu tinha visto sobre a chamada getRemoteUser().

(FacesContext.getCurrentInstance().getExternalContext().getRemoteUser())

Mas sempre retornava null, mas parece que é configuração do Tomcat (no meu caso).
Vou continuar lendo aqui pra ver se acho como configura ele direito pra esse remoteUser retornar o username.

concordo com o jaziel.rc, ter acesso a esses dados em sistema web é complicado…

Antes de eu continuar minha pesquisa aqui, alguém que entenda mais poderia me dizer se esse getRemoteUser é ± o que eu quero?
Pelo que li, parece que é isso msm.
Ele é da classe ExternalContext.

http://docs.oracle.com/javaee/5/api/javax/faces/context/ExternalContext.html#getRemoteUser()

=]
Vlw

[quote=BrZumba]Antes de eu continuar minha pesquisa aqui, alguém que entenda mais poderia me dizer se esse getRemoteUser é ± o que eu quero?
Pelo que li, parece que é isso msm.
Ele é da classe ExternalContext.

http://docs.oracle.com/javaee/5/api/javax/faces/context/ExternalContext.html#getRemoteUser()

=]
Vlw[/quote]

esta retornando nulo para você ? disculpa a insistencia mas agora fiquei curioso em saber :slight_smile: pois diz : Retorna o nome de login do usuário que fez a requisição atual se houver, caso contrário, retornará nulo.

[quote=aix][quote=BrZumba]Antes de eu continuar minha pesquisa aqui, alguém que entenda mais poderia me dizer se esse getRemoteUser é ± o que eu quero?
Pelo que li, parece que é isso msm.
Ele é da classe ExternalContext.

http://docs.oracle.com/javaee/5/api/javax/faces/context/ExternalContext.html#getRemoteUser()

=]
Vlw[/quote]

esta retornando nulo para você ? disculpa a insistencia mas agora fiquei curioso em saber :slight_smile: pois diz : Retorna o nome de login do usuário que fez a requisição atual se houver, caso contrário, retornará nulo.[/quote]

Sim. Eu uso essa chamada e retorna nulo.

String teste = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
e ‘teste’ é null.

Pelo que eu vi, parece que é configuração do servidor (no meu caso tomcat).
Estou fuçando a internet aqui pra ver de qualé…

No Windows tem a variável de ambiente %USERNAME%. Dei uma procurada rápida pela internet e parece que em máquinas windows você pode utilizar ActiveX ou VBScript (nao encontrei nada para javascript) para pegar as variáveis de ambientes do cliente e enviar num request para o server, mas nunca usei isso. Outra sugestão seria fazer um applet ou flash para buscar essas variáveis de ambiente.

Obs: No request dei uma olhada rápida em PHP (servidor rápido para testes que tenho aqui, rsrs) e não tem nenhuma identificação do usuário, segue o código de exemplo:

<?php foreach(getallheaders() as $key => $value){ echo "Key = $key => Value = $value
"; } ?>

E para o chrome trouxe esses resultados:

[quote]Key = Host => Value = localhost
Key = Connection => Value = keep-alive
Key = Cache-Control => Value = max-age=0
Key = Pragma => Value = no-cache
Key = User-Agent => Value = Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7
Key = Accept => Value = text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Key = Accept-Encoding => Value = gzip,deflate,sdch
Key = Accept-Language => Value = pt-BR,pt;q=0.8,en-US;q=0.6,en;q=0.4
Key = Accept-Charset => Value = ISO-8859-1,utf-8;q=0.7,*;q=0.3
Key = Cookie => Value = SESS29af1facda0a866a687d5055f2fade2c=OwPNYEjGlqbfv3EpIghBXjGGBd5D9zyBa0jPPZ7pr_Q [/quote]

Para o ff:

[quote]Key = Host => Value = localhost
Key = User-Agent => Value = Mozilla/5.0 (Windows NT 6.2; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0
Key = Accept => Value = text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Key = Accept-Language => Value = en-us,en;q=0.5
Key = Accept-Encoding => Value = gzip, deflate
Key = Accept-Charset => Value = ISO-8859-1,utf-8;q=0.7,*;q=0.7
Key = Connection => Value = keep-alive [/quote]

Internet Explorer

[quote]Key = Accept => Value = text/html, application/xhtml+xml, /
Key = Accept-Language => Value = pt-BR
Key = User-Agent => Value = Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Key = Accept-Encoding => Value = gzip, deflate
Key = Host => Value = localhost
Key = Connection => Value = Keep-Alive [/quote]

Safari

[quote]Key = Host => Value = localhost
Key = User-Agent => Value = Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7
Key = Accept => Value = text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Key = Accept-Language => Value = en-US
Key = Accept-Encoding => Value = gzip, deflate
Key = Connection => Value = keep-alive [/quote]

[quote=BrZumba][quote=aix][quote=BrZumba]Antes de eu continuar minha pesquisa aqui, alguém que entenda mais poderia me dizer se esse getRemoteUser é ± o que eu quero?
Pelo que li, parece que é isso msm.
Ele é da classe ExternalContext.

http://docs.oracle.com/javaee/5/api/javax/faces/context/ExternalContext.html#getRemoteUser()

=]
Vlw[/quote]

esta retornando nulo para você ? disculpa a insistencia mas agora fiquei curioso em saber :slight_smile: pois diz : Retorna o nome de login do usuário que fez a requisição atual se houver, caso contrário, retornará nulo.[/quote]

Sim. Eu uso essa chamada e retorna nulo.

String teste = FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
e ‘teste’ é null.

Pelo que eu vi, parece que é configuração do servidor (no meu caso tomcat).
Estou fuçando a internet aqui pra ver de qualé…[/quote]

não vai funcionar com FacesContext.getCurrentInstance().getExternalContext().getRemoteUser(); isot é caso o usuario ja esteja logado na app.

como diz: Retorna o nome de login do usuário que fez a requisição atual se houver retorna null porque não tem ninguem logado.

encontrei esse código ActiveX:

var wshShell = new ActiveXObject("WScript.Shell"); var usuario = wshShell.ExpandEnvironmentStrings("%USERNAME%"); alert(usuario);

aqui

Mas, conforme um comentário no próprio forum do imasters:

e

[quote]Você esta trabalhando em ambiente intranet? Se sim, outra forma seria você configurar o endereço como site confiável.
[/quote]

Mas acho que ActiveX só funciona no IE.