Sugestões para criar uma camada para todas aplicações da empresa utilizar essa camada.
Li a respeito do jguard, mas não achei ele muito bom porque ele não lê do banco, tem que registrar tudo em xml e no caso de xml, teria que fazer uma gambiarra para a aplicação lê do JBOSS a cada nova mudança.
E fora que esses perfis são para n aplicações, controle e acesso.
LDAP é realmente uma boa ou é algo muito complexo mesmo?
Meu velho, eu criei um sistema de segurança, ao qual eu ja consegui acoplar sem problemas em tres sistemas meus.
Agora tive que fazer do zero, mais ficou do jeito que eu queria.
Da suporte a 2 tipos de banco e de facil manutenção para suportar outros tipos.
como ja disse antes p/ envcontrar isso acredito que você vai ter que fazer na mão!
[quote=antoniopopete]Sugestões para criar uma camada para todas aplicações da empresa utilizar essa camada.
Li a respeito do jguard, mas não achei ele muito bom porque ele não lê do banco, tem que registrar tudo em xml e no caso de xml, teria que fazer uma gambiarra para a aplicação lê do JBOSS a cada nova mudança.
E fora que esses perfis são para n aplicações, controle e acesso.
LDAP é realmente uma boa ou é algo muito complexo mesmo?[/quote]
LDAP ou qualquer outro meio de armazenamento são boas opções quando vc precisa autorizar/autenticar em Java EE. Agora, se vc prefere reinventar a roda como o cara aí de cima, boa sorte…
LDAP ou outra forma de armazenamento?Que oturra forma?
[quote=Taz][quote=antoniopopete]Sugestões para criar uma camada para todas aplicações da empresa utilizar essa camada.
Li a respeito do jguard, mas não achei ele muito bom porque ele não lê do banco, tem que registrar tudo em xml e no caso de xml, teria que fazer uma gambiarra para a aplicação lê do JBOSS a cada nova mudança.
E fora que esses perfis são para n aplicações, controle e acesso.
LDAP é realmente uma boa ou é algo muito complexo mesmo?[/quote]
LDAP ou qualquer outro meio de armazenamento são boas opções quando vc precisa autorizar/autenticar em Java EE. Agora, se vc prefere reinventar a roda como o cara aí de cima, boa sorte… [/quote]
Na verdade minha reinvenção permite que eu autentique usuários em qualquer servidor de jboss a weblogic, já testado.
Permite que você cadastre exatamente quais perfis vão ter acesso a as páginas e no caso de JSF ele captura por ação.
Idependente do banco que for escolhido.
é eu gostei do modelo Aro 17 de minhas rodas.
nunca gostei de aro 13…
BD, txt, xml, o último authentication provider que eu implementei, por exemplo, acessava um legado por JMS (por mais bizonho que isso possa parecer).
[quote=afamorim][quote=Taz][quote=antoniopopete]Sugestões para criar uma camada para todas aplicações da empresa utilizar essa camada.
Li a respeito do jguard, mas não achei ele muito bom porque ele não lê do banco, tem que registrar tudo em xml e no caso de xml, teria que fazer uma gambiarra para a aplicação lê do JBOSS a cada nova mudança.
E fora que esses perfis são para n aplicações, controle e acesso.
LDAP é realmente uma boa ou é algo muito complexo mesmo?[/quote]
LDAP ou qualquer outro meio de armazenamento são boas opções quando vc precisa autorizar/autenticar em Java EE. Agora, se vc prefere reinventar a roda como o cara aí de cima, boa sorte… [/quote]
Na verdade minha reinvenção permite que eu autentique usuários em qualquer servidor de jboss a weblogic, já testado.
Permite que você cadastre exatamente quais perfis vão ter acesso a as páginas e no caso de JSF ele captura por ação.
Idependente do banco que for escolhido.
é eu gostei do modelo Aro 17 de minhas rodas.
nunca gostei de aro 13…
[/quote]
Dê uma olhada em JAAS. É uma espec Java EE que faz exatamente o que vc fez, só que com a vantagem de o desenvolvedor nem colocar as mãos em usuário/senhas/roles (e isso é importante quando falamos de segurança, não!?)
Meu rei, eu conheço o JAAS, tive que trabalhar com ele em um projeto, no qual ele foi escolhido pelo Arquiteto da epoca, para utilizarmos visando obter ganho de tempo, tudo ia bem ate que precisamos especializar algumas coisas.
Depois tivemos que migrar de servidor de um tomcat para um jboss, ai o bicho realmente pegou.
Acho que ele pode ate resolver para sistemas padrões e que a parte de segurança seja básica, mais num sistema JSF por exemplo aonde vc esta navegando em uma página e clica numa ação, vai para a outra página mais a URL é da página anterior, você vai ter dor de cabeça, ou num sistema em que pode acessar a página, mais não pode acessar uma determinada ação de uma página, como o editar.
Eu realmente prefiro ter o meu sistema de segurança.
Outro dia estava com meu sistema de segurança quando um cliente pediu para que um usuário pudesse ter mais de um perfil.
E ai?!?
Eu ajustei o meu sistema, mudei as classes services e tudo funcionou em 8 horas de trabalho.
posso estar falando besteira, mais ja vendi esse sistema 3 vezes, p/ mim ele já se pagou.
Meu rei, demorou hein? Com JAAS, era só cadastrar uma nova Role… (1 minuto?)
isso que vc nao esta entendendo, não era para o usuŕio ter mais um perfil no sistema, ele queria que no sistena o usuário pudesse ter mais de um perfil por vez e ele administrando isso.
e ai ?!?!
fora que eu do liberdade por meio de funcionalidades pre-cadastradas o usuário gerenciar isso sem minha intervenção.
[quote=afamorim]isso que vc nao esta entendendo, não era para o usuŕio ter mais um perfil no sistema, ele queria que no sistena o usuário pudesse ter mais de um perfil por vez e ele administrando isso.
e ai ?!?!
fora que eu do liberdade por meio de funcionalidades pre-cadastradas o usuário gerenciar isso sem minha intervenção.[/quote]
É possível se fazer isso utilizando JAAS com LDAP ou qualquer Banco de Dados.
No trabalho estamos montando um sistema de autenticação / autorização utilizando JAAS que trabalha com usuário, perfil e função como você citou.
E sobre o usuário gerenciar os usuários, perfis e funções nada impede de você montar uma interface para ele poder fazer isso.
Eu sou a favor de, qualquer que seja o cliente/empresa, que as politicas de AAA (Autenticação, autorização e auditoria, vide RBAC) sejam proprietárias… vc pode muito bem usar LDAP + JAAS na baixa plataforma e RACF na alta, mas que o modelo da empresa tb esteja implementado, como responsabilidades, grupos, visões, posicionamentos organizacionais, etc.
Sei, vc é a favor que seja “proprietário”, mas tb pode “usar LDAP + JAAS”. Muito bem!!
Defina:
-
responsabilidades;
-
visões;
-
posicionamenteos organizacionais.
O JAAS é um padrão java para Autenticação e Autorização , mas essa autorização é bem básica. Ela é voltada a roles e não funciona com base em recursos. Os recursos a que o perfil (role) tem acesso são codificados diretamente na aplicação. Ele é o padrão, mas ele não é o santo graal. O bom do JAAS assim como outros padrões java é que eles são imaginados para que o progamador explore os conceitos e os extenda quando necessário. num sistema realista o JAAS precisa ser extendido. Vários frameworks pegam a base do JAAS e o extendem. Como Ageci e o JGuard.
Precisamos do JAAS para montar um sistema de perfis ? Não. Mas é bom se o nosso sistema de perfis funcionar com JAAS.
O JAAS parte da ideia que o serviço de AA é algo que podemos injetar no sistema, como injetamos um sistema de transações.
E isso não é realista nos programas brasileiros onde o dono do negocio quer configurar todos os acesso um por um e não entende muito bem o conceito de papel. Por outro lado, o mecanismo é externo ao sistema, quando o usuário espera que seja integrado ao sistema ( ou seja, configurar o acesso de dentro da aplicação). O JAAS parte da ideia que a segurança é configurada fora do sistema, como as politicas de segurança em geral. Isso é de alguma forma estranho à necessidade que temos e por isso é mais facil criar nosso sistema de acesso e autorização. O que é válido. Ninguem nos obriga a usar JAAS.
A questão é que se o nosso sistema não precisa de JAAS mas se integra a ele quando necessário é muito melhor, porque um monte de coisas já existe pronto no JAAS. Terceiro implementam conta o JAAS e não contra o nosso framework. Por exemplo o acesso aos perfis do windows é feito por JAAS. Sem JAAS é mais complicado e temos que replicar muito trabalho.
Enfim, para o básico ha realmente uma necessidade de construir outro sistema, mas temos que pensar que seguir o padrão é sempre melhor. O problema é que é também o mais demorado e dificil devido à pouca documentação e exemplo.
Tem um artigo bem interessante sobre o assunto:
http://blogs.sun.com/enterprisetechtips/entry/improving_jsf_security_configuration_with.
Baseado no artigo acima, criei meu controle de permissão para um projeto com JSF.
Tenho uma Pojo Usuario, Perfil, Permissao, Acao e Role
Um Usuario, poderá ter varios perfis
Um Perfil, poderá ter varias Permissoes
Uma Permissao é composta por uma Role e uma Acao
Uma Role está associada a uma ou mais Acoes
Cada Metodo que precise de autenticação, faço igual ao exemplo abaixo:
@SecurityRoles("PERFIL.SALVAR")
public String salvar(){
[quote=Taz]Sei, vc é a favor que seja “proprietário”, mas tb pode “usar LDAP + JAAS”. Muito bem!!
Defina:
-
responsabilidades;
-
visões;
-
posicionamenteos organizacionais.
[/quote]
O LDAP é apenas para guardar a senha e criar um ponto unico de acesso para autenticação.
O JAAS é para usar de maneira corporativa (JEE) a autenticação e a autorização sobre os usuários.
Responsabilidades é vc implementar o paradigma de “responsabilidade sobre pesssoas” em uma linguagem computacional. Ou seja, é vc implementar que um usuário tem responsabilidades por varios usuários, por um grupo de usuários e outros usuários são responsaveis por ele. Com isso vc pode atribuir os perfis de responsabilidade, explicando mais uma vez, se vc é responsavel por fulano e fulano tem os papeis A, B e C, vc tb tem tais papeis caso esteja espelhado como fulano.
Visões é quando vc dá acesso a um determinado campo, por exemplo, a um usuário. Imagine que vc está desenvolvendo um sistema de vendas e não deseja que ninguem, a não ser os diretores, vejam o valor do preço de compra dos produtos. Se vc implementa visões no seu ACM (Access Control Manager) vc consegue fazer isso.
Já posicionamento organizacional é bem parecido com responsabilidades, só que para a execução de workflows… quem pode aprovar tal ordem de compra?! Para isso vc precisa os responsaveis pelo usuário que gerou a ordem, correto?!? Ainda falta uma informação: quem são os usuários responsaveis pelo fulano que tem alçada de aprovação para um determinado valor de ordem de compra?!? Entendeu?
E sobre o proprietário, se vc conhece alguma solução de LDAP que me dê isso tudo eu paro de vender minha ferramenta de RBAC agora… que ai sim acabaram os meus argumentos…
Não, LDAP provê funcionalidades muito além de “ponto unico de acesso para autenticação”.
Dá pra fazer com roles e, portanto, com JAAS.
Dá pra fazer por segurança declarativa (anotações ou xml) nos serviços e é um mecanismo perfeitamente extensível, conforme proposto pela Java EE.
Aqui estamos falando de workflow. Ferramentas de workflow da BEA, IBM, JBoss, etc, etc, integram perfeitamente com repositórios (poderia até ser um LDAP!!!) que contêm informações sobre alçadas.
LDAP não dá mesmo, quem dá tudo isso pra vc é JAAS e Java EE.
Obvio!!! Na minha resposta eu só estou explicando o que eu uso e pra que eu uso!
Não entendo a fundo de JAAS, mas tem certeza que vc consegue fazer com que grupos e pessoas sejam criados sem necessidade de restart da aplicação, pessoas ficam responsaveis por pessoas, pessoas ficam responsaveis por grupo, grupos “especializam” grupos, pessoas tem perfil direto e indireto (via uma especialização ou via grupo) e tudo isso de maneira que vc não precise programar nada nas suas classes (qualquer que seja ela, controller, dominio, etc)?!? Sem contar a negação explicita, quando vc quer forçar que, independente da arvore de responasbilidade de um usuário, caso ele esteja escrito em um papel especifico, ele não terá acesso a um determinado recurso? Ou até mesmo os acessos cruzados, quando uma pessoa tem acesso a um recurso virtual, que na verdade só serve para definir acesso a um outro recurso (por exemplo, vc tem acesso a cadastrar pessoa, mas existe o cadastro rápido e o completo; qual eu devo chamar)? Caso sim, preciso estudar melhor JAAS…
Hum… então quer dizer que eu posso fazer um método que retorne a lista de funcionários completinha, e faça uma página que liste todos eles na tela… ai, de acordo com o meu perfil, eu vejo ou não o salári da pessoa? Ou melhor, eu vejo os salários dos funcionários sob minha responsabilidade enquanto os outros aparecem “asteriscados”??? Claro, sem necessidade de IF no seu código… E o circuit-broker da empresa? o JAAS consegue ver se o circuit-broker está legal e liberar a aplicação?!? E SingleSignOn juntamente com o RACF?!?
Ok, eu disse que seria um workflow… mas pra que separar coisas que são parecidas? Se um controle de acesso controla toda a autenticação, autorização, auditoria e responsabilidades, é ele que tem que me responder pra onde eu envio tal pedido… e sem XML de montão como o BPEL…
A questão aqui não é a abrangência do JEE, do JAAS, do LDAP ou de qq outra solução.
Quando digo algo proprietário, eu pergunto:
Quantos processos de login vc já criou na sua vida?!?
Quanto tempo vc gastou para fazer um simples processo de controle de acesso a um determinado recurso num sisteminha?!?
E se o JEE é muito para o seu cliente?
E quando o login dele está cadastrado em um banco access?!?
E quando vc não tem JAAS?!? O que vc faz?!?
E se a empresa que vc vendeu o seu software não tem LDAP??!?! E se nem um free ela quizer?!?
E se vc utilizar RACF pra tudo?!?
Eu naõ faço softwares pra vender a um cliente só… meus softwares sobre encomenda sempre viram ferramentas para uma possivel venda para outro cliente… como posso depender de um ambiente tão heterogêneo como os diversos encontrados no mundo?!?
Se vc depender sempre de algo que, infelizmente, não é tão flexivel como deveria, vc pode ficar na mão…
Acho que era sim, faça uma releitura do primeiro post. JAAS e Java EE (não coloque LDAP no meio da história) provêm uma infra-estrutura extensível para implementação de segurança a nível corporativo.
Qual é o seu produto mesmo?