1 2 Previous Next 18 Replies Latest reply on May 20, 2014 10:38 PM by malikoski

    Dúvida Picketlink

    filipeferraz

      Trabalho em um órgão público e implementamos dentro do Jboss extendendo o JAAS um esquema de autenticação onde as permissões estão vinculadas a uma aplicação, um usuário e um setor. Quando o usuário faz login na aplicação se possui permissão em mais de um setor são fornecidos os setores disponíveis para seleção e as permissões são carregadas conforme o setor selecionado. Estava dando uma lida a respeito do funcionamento do picketlink e acredito que possamos substituir esta solução por algo mais integrado, mas não consegui visualizar a possibilidade de permitir o usuário selecionar o setor. No que entendi poderiamos associar o usuário a user, aplicação a group e a autorização a role, só não encontrei correspondência para o setor. Alguém tem alguma sugestão de como tratar o setor ou já implementou algo parecido com picketlink?

        • 1. Re: Dúvida Picketlink
          luan.cestari
          1 of 1 people found this helpful
          • 2. Re: Dúvida Picketlink
            filipeferraz

            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

              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

                Olá,   

                 

                     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. 

                1 of 1 people found this helpful
                • 5. Re: Dúvida Picketlink
                  filipeferraz

                  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

                    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

                      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

                        Valeu, consegui implementar aqui em cima do exemplo do JPA.

                        • 9. Re: Dúvida Picketlink
                          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

                            Po, muito legal =) Parabéns ai pela contribuição =-D

                            • 11. Re: Dúvida Picketlink
                              mauriciomag

                              Bacana 

                               

                              Abs

                              • 12. Re: Dúvida Picketlink
                                malikoski

                                E como propagar isso para EJB?

                                • 13. Re: Dúvida Picketlink
                                  filipeferraz

                                  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

                                    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.

                                    1 2 Previous Next