-
1. Re: Dúvida Picketlink
luan.cestari Apr 28, 2014 12:47 PM (in response to filipeferraz)1 of 1 people found this helpfulNao entendi direito sua duvida, voce poderia dar mais detalhes? Tambem recomendo os seguintes links https://github.com/jboss-developer/jboss-picketlink-quickstarts e https://docs.jboss.org/picketlink/2/latest/reference/html/sect-Authentication_API_-_the_code_xmlnshttpdocbook.orgnsdocbookIdentitycode_bean.html
-
2. Re: Dúvida Picketlink
filipeferraz Apr 28, 2014 1:31 PM (in response to luan.cestari)A idéia é extender o esquema básico de autenticação para permitir vincular a permissão a um sistema e um setor a um usuário.
Exemplo:
Filipe, no sistema X, no setor Y, possuí permissão de admin.
Filipe, no sistema X, no setor Z, possui permissão de usuário.
No momento do login no sistema ele perguntaria o setor que o usuário está acessando caso encontre mais de um disponível.
Desde já, muito obrigado pela resposta e a documentação.
Já havia dado uma olhada nos quickstarts e o mais próximo que havia encontrado é o picketlink-authentication-idm-multi-tenancy que permite selecionar antes do login um Realm, mas que não resolve pela seleção do setor ser posterior ao login.
-
3. Re: Dúvida Picketlink
luan.cestari Apr 29, 2014 12:28 PM (in response to filipeferraz)Realmente aquele quickstart ( jboss-picketlink-quickstarts/picketlink-authentication-idm-multi-tenancy at master · jboss-developer/jboss-picketlink-qu… ) parece com que voce comentou. No seu caso seria necessario pegar e consultar qual eh o setor do usuario em uma base de dados para verificar a permissao do mesmo, correto? Ou talvez seria necessaria criar roles especificas por setor ou criar realms separados para cada (seria um pouco duplicado, mas eh bem seguro e controlado). Voces jah viram de talvez migrar para o esquema de federacao usando SAML tendo um SSO?
-
4. Re: Dúvida Picketlink
pcraveiro Apr 29, 2014 3:34 PM (in response to luan.cestari)1 of 1 people found this helpfulOlá,
Acredito que o uso de multi-tenancy esteja bastante voltado para cenários onde seja necessário manter diferentes security domains por uma única aplicação. Caso de uso bem comum em aplicações SaaS.
No seu caso, me parece que você está trabalhando com um único security domain, mas com a necessidade de gerenciar permissões de acordo com o sistema que o usuário esteja acessando e também levando em consideração o setor no qual ele pertence. Desta forma, acredito que você possa modelar o seu modelo de identidade representando tanto o sistema como o setor como identity types. Desta forma você pode criar um tipo de relacionamento que associe um usuário -> sistema -> setor -> role.
Vale a pena ressaltar que o PicketLink também irá respeitar a hierarquia dos setores quando estiver verificando as permissões. Por exemplo, Felipe é membro do Setor B, que por sua vez é um sub-setor do Setor A. As permissões do Setor A estarão também, porém indiretamente, atribuídas ao Felipe.
Abraços.
-
5. Re: Dúvida Picketlink
filipeferraz Apr 29, 2014 4:50 PM (in response to luan.cestari)O problema da abordagem de roles específicas pra cada setor é que vai ter um excesso de roles desnecessárias (no fim a role de admin, por exemplo, vai ser admin).
Na segunda abordagem teria excesso de realms já que a quantidade de setores é considerável.
Vou dar uma lida no uso do SAML como federação, mas acredito que enfrente o mesmo problema em gerenciar as 3 entidades para controle da permissão.
-
6. Re: Dúvida Picketlink
filipeferraz Apr 29, 2014 4:55 PM (in response to pcraveiro)Muito obrigado pelo auxílio de vocês.
Pedro, gostei da idéia de utilizar usuário, sistema e setor como identity types. O relacionamento entre os 3 seria uma nova entidade e esta estaria associada a role, correto?
Essa hierarquia de permissões só ocorre caso atribua uma permissão diretamente ao setor, sistema ou usuário e não ao conjunto?
-
7. Re: Dúvida Picketlink
pcraveiro Apr 30, 2014 4:16 PM (in response to filipeferraz)Exatamente,
O relacionamento seria um Relationship associando sistema, setor, usuário e role.
A hierarquia seria no caso de você ter roles associadas ao Setor A, e querer saber se o Felipe possui alguma dessas roles. O quer faz sentido, tendo em vista que o setor o qual ele pertence (Setor B) é um sub-setor de A.
Abraços.
Pedro Igor
-
8. Re: Dúvida Picketlink
filipeferraz May 2, 2014 12:54 AM (in response to pcraveiro)Valeu, consegui implementar aqui em cima do exemplo do JPA.
-
9. Re: Dúvida Picketlink
filipeferraz May 4, 2014 2:57 AM (in response to filipeferraz)Pra quem tiver interesse em ver como a idéia ficou implementada tentei montar um quickstart com a situação apresentada em cima do exemplo picketlink-authorization-idm-jpa.
Se também tiverem alguma sugestão só falar.
filipeferraz/picketlink-authorization-idm-jpa-custom · GitHub
-
10. Re: Dúvida Picketlink
luan.cestari May 5, 2014 1:28 PM (in response to filipeferraz)Po, muito legal =) Parabéns ai pela contribuição =-D
-
-
12. Re: Dúvida Picketlink
malikoski May 19, 2014 12:43 PM (in response to filipeferraz)E como propagar isso para EJB?
-
13. Re: Dúvida Picketlink
filipeferraz May 19, 2014 1:17 PM (in response to malikoski)Desconheço se o picketlink possuí alguma funcionalidade para para utilizar as classes customizadas, mas uma forma de propagar a funcionalidade para EJB é com a utilização de Inteceptors.
No projeto original (antes de migrar para o picketlink) criei uma anotação para interceptar as requisições onde passo as custom roles permitidas e via reflection controlo a autorização (posso buscar em um managedbean o setor que o usuário encontra-se logado e permitir ou negar o acesso ao método).
Se alguém tiver alguma sugestão dentro do picketlink que possa simplificar esta implementação tenho interesse em aprender.
-
14. Re: Dúvida Picketlink
pcraveiro May 19, 2014 6:02 PM (in response to filipeferraz)Felipe,
Achei bem interessante seu quickstart. Ele permite entender alguns conceitos e features oferecidas pelo projeto, principalmente àquelas relacionadas ao Identity Model e como customizá-lo para atender necessidades específicas de projetos.
Se você estiver interessado, posso ajudá-lo a revisar e adaptar o seu quickstart de forma a torná-lo um quickstart oficial do projeto. Acho que isso seria muito bom para aqueles que queiram entender como customizar o PicketLink de forma a representar o seu próprio modelo de identidades.
Podemos conversar no IRC: freenode/#picketlink.
Abraços.