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

Boa tarde galera,

Em primeiro lugar, desculpas se postei no lugar errado do fórum. Mas achei essa parte de JEE mais apropriada. Caso não seja, favor remover =]

Vamos a duvida:

A única coisa que quer é que minha aplicação web consiga pegar o nome do usuário da rede do windows. Sabe qnd a gente faz login bota domínio, username e senha? Então, só quero que minha aplicação pegue esse username.

Explicando um pouco mais: aqui na minha empresa, estou desenvolvendo um sisteminha web. Cada funcionário vai ter um determinado nível de acesso. Eu pego o username dele (no caso, a matrícula), e vejo no meu banco de dados quais páginas ele pode ter acesso. Coisinha bem simples e sem mta segurança.
Não quero senha dele, nem nada… só o username.
Como faz??

Já tô há uns 3 dias procurando isso na net e nada. Aliás, nada não… MTA coisa. Procurei no google, aqui, stackoverflow, tudo… e achei mta coisa. Mas cada lugar dá uma solução diferente e pelo que vi, algumas são mto mais do que eu preciso.
Me falaram de SPNEGO, KERBEROS, JNDI, Single Sign on, Seam Framework, realm no tomcat e mais um monte de coisas.

Alguns desses inclusive fala de ter acesso ao Active Directory, mas nem em sonho eu vou ter acesso a isso aqui… hehehhehehe
E me falaram que eu nem preciso… eu só quero conseguir pegar o username msm.

Alguem aê sabe pelo menos me direcionar pra algum canto?

Aqui usamos windows msm (XP), to desenvolvendo em java usando JSF. Pra servidor, por enqto estou testando localmente com Tomcat, mas qnd já estiver tudo supimpa vai rodar num servidor Debian com JBOSS.

Valeu
o/

[quote=BrZumba]Boa tarde galera,

Em primeiro lugar, desculpas se postei no lugar errado do fórum. Mas achei essa parte de JEE mais apropriada. Caso não seja, favor remover =]

Vamos a duvida:

A única coisa que quer é que minha aplicação web consiga pegar o nome do usuário da rede do windows. Sabe qnd a gente faz login bota domínio, username e senha? Então, só quero que minha aplicação pegue esse username.

Explicando um pouco mais: aqui na minha empresa, estou desenvolvendo um sisteminha web. Cada funcionário vai ter um determinado nível de acesso. Eu pego o username dele (no caso, a matrícula), e vejo no meu banco de dados quais páginas ele pode ter acesso. Coisinha bem simples e sem mta segurança.
Não quero senha dele, nem nada… só o username.
Como faz??

Já tô há uns 3 dias procurando isso na net e nada. Aliás, nada não… MTA coisa. Procurei no google, aqui, stackoverflow, tudo… e achei mta coisa. Mas cada lugar dá uma solução diferente e pelo que vi, algumas são mto mais do que eu preciso.
Me falaram de SPNEGO, KERBEROS, JNDI, Single Sign on, Seam Framework, realm no tomcat e mais um monte de coisas.

Alguns desses inclusive fala de ter acesso ao Active Directory, mas nem em sonho eu vou ter acesso a isso aqui… hehehhehehe
E me falaram que eu nem preciso… eu só quero conseguir pegar o username msm.

Alguem aê sabe pelo menos me direcionar pra algum canto?

Aqui usamos windows msm (XP), to desenvolvendo em java usando JSF. Pra servidor, por enqto estou testando localmente com Tomcat, mas qnd já estiver tudo supimpa vai rodar num servidor Debian com JBOSS.

Valeu
o/[/quote]

veja se ajuda

Opa, valeu Aix.

Eu cheguei a olhar essa página esses dias.

Mas o cara diz que é um gambiarra. Hheheheheheheh
Se vc acessar só colocando o login de outra pessoa e qualquer senha, ele diz pra aplicação que vc é a outra pessoa.
Ou seja, se na hr de logar, eu colocar o login do meu chefe (matrícula dele) e qualquer senha, a aplicação vai me reconhecer como meu chefe e me dar acesso às páginas que meu chefe tem acesso. Aí não rola =/

Continuo aguardando almas caridosas com alguma solução ou direcionamento
=D

[]'s

está usando oq como controller?
Spring? EJB?

pro Spring tem o Spring Security

[quote=igor_ks]está usando oq como controller?
Spring? EJB?
pro Spring tem o Spring Security[/quote]

ele quer ler o usuario de login do windows o user da rede pois pelo que li é rede dominio, veja:

[quote]…minha aplicação web consiga pegar o nome do usuário da rede do windows. Sabe qnd a gente faz login bota domínio, username e senha? Então, só quero que minha aplicação pegue esse username.
[/quote]

ele precisa executar com java comandos nativos do windows para pegar o user da rede, certamente tenha que ter permissão para fazer isto, pois geralmente rede dominio é tudo bloqueado.

Igor_ks,

Sou novo com programação pra web.
JSF então… aprendi na marra pra desenvolver esse sistema aqui, procurando tutoriais na internet, etc.

Ou seja, não sei o que é esse “controller” que vc tá falando. Seria o “controller” do modelo MVC ou é algo específico do JSF?
Anyways, não estou usando nenhum desses dois aí (EJB e Spring).

Igor_ks,

Sou novo com programação pra web.
JSF então… aprendi na marra pra desenvolver esse sistema aqui, procurando tutoriais na internet, etc.

Ou seja, não sei o que é esse “controller” que vc tá falando. Seria o “controller” do modelo MVC ou é algo específico do JSF?
Anyways, não estou usando nenhum desses dois aí (EJB e Spring).

[quote=aix][quote=igor_ks]está usando oq como controller?
Spring? EJB?
pro Spring tem o Spring Security[/quote]

ele quer ler o usuario de login do windows o user da rede pois pelo que li é rede dominio, veja:

[quote]…minha aplicação web consiga pegar o nome do usuário da rede do windows. Sabe qnd a gente faz login bota domínio, username e senha? Então, só quero que minha aplicação pegue esse username.
[/quote]

ele precisa executar com java comandos nativos do windows para pegar o user da rede, certamente tenha que ter permissão para fazer isto, pois geralmente rede dominio é tudo bloqueado.[/quote]

Pelo que eu dei uma lida, eu ACHO que seria algo como o browser me passar essa informação (o login do usuário)

Acredito (acredito, nunca fiz e não tenho certeza) que você possa pegar essa informação de alguma variavel do sistema do próprio windows, dai recuperando esse valor é colocar a sua regra de negócio para funcionar. De sugestão daria para fazer um Filter que use essa informação ( no caso o nome do usuario logado no windows) e confrontar com as permissões do seu sistema.

Então Jaziel,

Uma das sugestões que eu tinha visto era fazer isto. Parece que o windows armazena isso em algum variável global do próprio windows (?), pelo que entendi.
Mas procurei a respeito e não achei nada relevante…

[quote=igor_ks]está usando oq como controller?
Spring? EJB?

pro Spring tem o Spring Security[/quote]

Igor, se eu usar esse Spring Security eu consigo fazer isso?

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?