Alguém usando JAAS?

Olá,

alguém está usando JAAS ou já usou?

Se sim, eu gostaria de uma descrição rápida sobre como é a aplicação e se o framework superou as espectativas.

Tenho interesse em usar JAAS com as regras de autorização armazenadas em BD mas, o que já pude ler e testar me pareceu menos flexível do que eu esperava. Com as respostas eu quero poder avaliar se vale a pena criar o meu próprio framework de autorização…

E eu aproveito e peço para que serve esse tal de JASS?

Olá, Franklin

Estou tentando adaptar o JAAS a um sistema e cheguei às seguintes conclusões:

  • Me pareceu que os idealizadores da tecnologia não tinham a web como um alvo claro. O uso de JAAS neste caso IMHO é meio enjambrado;

  • Alguns servlet containers implementam parte da API através de javax;

  • Tomei a decisão de não utilizar esta funcionalidade e deixar tudo na própria aplicação. Mais adiante, pretendo integrar tudo;

  • Para fins de desenvolvimento, criei uma emulação da classe LoginContext;

Estou sem tempo agora, mas volto ao assunto.

T+

Olá,

JAAS = Java Authentication ant Authorization Service. Ou seja, server para autenticação e aturorização de acesso.

Hipersoft,

realmente eles não pensaram em Web. Estou me baseando em um artigo q mostra como usar URLs nas regras de autenticação. Usando Struts fica mais fácil, pois todas as ações do sistema são executadas através de URLs diferentes… A grande desvantagem é q toda a parte de “auth” fica dependente da aplicação rodar em cima de URLs. Ou seja, não serve caso parte do sistema não seja web.

Dá uma olhada nele:
http://www.mooreds.com/jaas.html

To tentando usa-lo a algum tempo mas nunca consigo.
Acho que irei postar alguma coisa sobre o mesmo, talvez alguem me ajude.

Oi

Frank, acho que até ja conversamos sobre JASS uma vez, cara estou estudando nos tempo livres sobre JAAS para usarmos no JNuke, tu já quer partir para o desenvolvimento??? Pensei que ia me avisar antes. :cry:

T+

Olá!

Como a galera sabe, o JAAS se divide em duas áreas: autenticação e autorização.

Muito bem.

A autenticação eu implantei sem problemas, criei um LoginModulo, criei um arquivo jaas.config, integrei via jre/lib/security/java.security. Blz! Funcionou tudo ok e, mais importante, ficou claro para mim o benefício de tornar a autenticação plugável.

Porém, na autorização, adaptei a minha aplicação para permitir o acesso meramente checando as “credentials” do “subject”. Funcionou, mas ficou um gosto amargo de café forte na boca. Não vi a necessidade de dar um passeio à-toa. Eu explico:

O link passado pelo Franklin citava uma classe derivada de Permission. Muito bem criei uma classe derivada de Permission e não de BasicPermission para dar maior flexibilidade. Mas como o meu sistema é muito grande, gerando uma pletora de urls, o código ficaria muito prolixo.

Pegar as permissões dos usuários do banco de dados e convertê-las para objetos URLPermission não seria problema, pois eu consegui uma classe que lê o arquivo de policy e que eu pretendia editar para inserir as URLPermissions. Depois eu substituiria o objeto Policy na JVM usando Policy.setPolicy().

Pensei em simplesmente converter a convenção de autorização antiga do meu sistema, que é baseada em bitmaps tanto na credencial do usuário quanto na máscara de acesso das servlets (se o resultado do operador AND for diferente de zero o acesso é concedido). Essa conversão transformaria os meus bitmaps em objetos Permission, que seriam associados aos usuários através da classe Policy supracitada. A checagem final ficaria a cargo de uma classe semelhante a AuthUtils encontrada no link do Franklin.

Por favor, apreciaria o comentário de alguém justificando a complexidade adicional de se usar o security manager ao invés do esquema de autorização mais simples.

Se não fui kraro, posso esclarecer algum ponto.

T+

Olá,

Jeveaux,

eu procuro sempre aprender implementando. Esta a maior vantagem de participar de projetos de Software livre na minha opinião. A parte de Auth do Jnuke ainda não funciona, só fiz alguns testes com JAAS em cima dele. Pode ver que nem está no commit. Isto estava consumindo muito do meu tempo. Já estou pensando em tocar outras coisas, e colocar a autorização depois, com AOP.

Hipersoft,
deu para entender quase tudo. Seria melhor colocar algum exemplo, pois acho q quem não manja muito não entendeu nada.

Eu naum entendi onde o mecanismo abaixo se aplica? Pode dar um exemplo?

[quote]Pegar as permissões dos usuários do banco de dados e convertê-las para objetos URLPermission não seria problema, pois eu consegui uma classe que lê o arquivo de policy e que eu pretendia editar para inserir as URLPermissions. Depois eu substituiria o objeto Policy na JVM usando Policy.setPolicy().
[/quote]

Massss bah, Franklin (posso falar assim, pois já morei 4 anos no Alegrete e a minha mulher é de lá :wink: )

No outro tópico deste mesmo fórum, eu coloquei um link para um arquivo que poderia ser editado para implementar isso. Vou repeti-lo aqui:

http://mail.gnu.org/archive/html/classpath/2003-12/txt00008.txt

O que essa classe faz é o que a JVM faz por default. A idéia é editar o arquivo para, antes de usar o setPolicy(), inserir regras adicionais (objetos Permission) a partir de qualquer fonte desejável. (BD, por exemplo).

Ainda não adaptei essa classe por duas razões:

  • tempo
  • estou dando uma papirada no modelo de segurança da JVM para me convencer de que o que estou fazendo não deixa brechas de segurança. Veja por exemplo o link abaixo, muito esclarecedor.

Alguem sabe quais são as vantagens de se utilizar JAAS para a segurança de um portal!? Quero integrar o JAAS ao TOMCAT, mas não sei quais as vantagens terei nisso!

E alguém conhece um site que tenham informações sobre o assunto?

Não vi grande vantagem no JAAS! Na verdade achei q ficou mais complicado do que fazer na mão a própria segurança!