LDAP para sistema de autorização

5 respostas
L

Prezados colegas,

Onde trabalho há um sistema de autorização (perfis, funcionalidades, sistemas) para utilização dos sistemas que desenvolvemos.

Atualmente, utilizamos um SGBD relacional para registro das informações necessárias para as rotinas de autorização destes sistemas. Existe uma tabela de usuários, uma de sistemas, uma de perfis e uma de funcionalidades, bem como uma associativa entre usuário e perfil.

Um sistema pode ter vários perfis, e um perfil pode ter várias funcionalidades.

Determinado perfil pertence a apenas um sistema.

Tudo funciona muito bem, mas houve a sugestão de que o processo de autorização para utilização dos sistemas passasse a utilizar um banco LDAP a fim de unificar a senha de utilização dos sistemas e dos serviços de rede.

Neste caso, recorro aos colegas que já trabalharam nestas circunstâncias para saber como fazem para criar níveis de permissão nos sistemas utilizando o LDAP.

Além de login (uid) e senha do usuário, que outros atributos a entidade de usuário precisa ter? É necessário extender algum schema?

Estamos pensando em utilizar a classe InetOrgPerson para registrar os dados dos usuários. O que acham?

Agradeço a ajuda.

[]s

Leandro

5 Respostas

yoshikichi

Bom aqui utilizamos o spring para ldap.
Mas no inicio utilizamos a api da novell.
O processo de autenticação é facil vc pode deixar que o servidor de aplicação faça isso para ti.
Mas o de autorização é um pouco mais especifico, ai acaba programando mesmo.
No trampo utilizamos AD ou Apache Ds.
MAs eu particularmente prefiro o OpenLdap.

http://developer.novell.com/documentation/jldap/jldapenu/api/
http://developer.novell.com/documentation/samplecode/jldap_sample/index.htm

L

Obrigado.

Como vcs fazem para saber os perfis dos usuários nos sistemas?

Criam um atributo com o nome do sistema e outro com o nome do perfil?

yoshikichi:
Bom aqui utilizamos o spring para ldap.
Mas no inicio utilizamos a api da novell.
O processo de autenticação é facil vc pode deixar que o servidor de aplicação faça isso para ti.
Mas o de autorização é um pouco mais especifico, ai acaba programando mesmo.
No trampo utilizamos AD ou Apache Ds.
MAs eu particularmente prefiro o OpenLdap.

http://developer.novell.com/documentation/jldap/jldapenu/api/
http://developer.novell.com/documentation/samplecode/jldap_sample/index.htm

gomesrod

Olá,

Se existe a intenção de unificar com a senha de rede então significa que será usado o Active Directory, correto?
Nesse caso, não é necessário criar um objeto referente ao usuário, pois ele já existe no AD (só precisa conhecer a estrutura da árvore para recupera-lo, infelizmente nao sei de cabeça pois mexi com isso já ha algum tempo). O objetos “usuario” no seu sistema seria apenas o conjunto de seus acessos.

O primeiro passo seria definir a estrutura de grupos e sistemas. Existem diversas formas de fazer isso, por exemplo:

--- Sistema1
         |--------Perfil 1 (GroupOfNames)
         |              |---------- DN: user=UsuarioXX, ... // Referencia DN do usuario no Active Directory
         |              |---------- DN: user=UsuarioYY, ...
         |
         |--------Perfil 2 (GroupOfNames)

--- Sistema 2
         |--------Perfil 3 (GroupOfNames)
         |              |---------- DN: user=UsuarioXX
--- Sistema1
         |--------Perfil 1
         |--------Perfil 2

--- Sistema 2
         |--------Perfil 3

--- (Usuario)
         |------- DN: Sistema=Sistema1, Perfil=Perfil 1
         |------- DN: Sistema=Sistema2, Perfil=Perfil 3

Essas 2 estruturas tem efeitos parecidos, o UsuarioXX tem acesso aos 2 sistemas, no primeiro com Perfil1 e no segundo com Perfil3.
Dependeria de estudar qual organização ficaria mais clara e também de algumas considerações referentes a performance (qual maneira ficaria mais leve para trazer os acessos do usuario que acabou de se logar?)

Existe ainda uma opção que se poderia considerar, economizando algum dinheiro para a empresa: não seria vantajoso mover a autenticação para o LDAP (cumprindo o objetivo de integrar com o login de rede), mantendo a autorização via DB?

Grinvon

Você não precisa estender nada.

Aqui eu preferir fazer as rotinas de comunicação do LDAP e banco de dados por meio do C#, então crio um pipeline que faz a conexão com o PowerShell que carrega o módulo necessário de acesso ao AD.

yoshikichi

lmg.bsb:
Obrigado.

Como vcs fazem para saber os perfis dos usuários nos sistemas?

Criam um atributo com o nome do sistema e outro com o nome do perfil?

yoshikichi:
Bom aqui utilizamos o spring para ldap.
Mas no inicio utilizamos a api da novell.
O processo de autenticação é facil vc pode deixar que o servidor de aplicação faça isso para ti.
Mas o de autorização é um pouco mais especifico, ai acaba programando mesmo.
No trampo utilizamos AD ou Apache Ds.
MAs eu particularmente prefiro o OpenLdap.

http://developer.novell.com/documentation/jldap/jldapenu/api/
http://developer.novell.com/documentation/samplecode/jldap_sample/index.htm

Cria Grupos, Unidade organizacionais e usuários.
Por exemplo:

DC: guj.com.br
->Unidade-Desenvolvedores
->User-1
->USer-2
etc

Grupo-Admin
----define no grupo q admin é o user-2 e outros.

Depois você cria o privilegios e define o grupo que pode utilizar.
Entendeu?

Criado 11 de abril de 2011
Ultima resposta 11 de abr. de 2011
Respostas 5
Participantes 4