Powerlogic Consultoria e Sistemas | Usando serviços de diretório

Transcrição

Powerlogic Consultoria e Sistemas | Usando serviços de diretório
Configurando o jSecurity para autenticação em serviço de diretório
Preparado por: Vinicius Emmanuel – [email protected]
Versão: 1.0
Descrição: tutorial de instalação e configuração manual de autenticação por serviços de diretório usando a aplicação de segurança
jSecurity.
Data: 31 de julho 2007
Objetivo
Entender o conceito de diretórios, LDAP, domínio, autenticação, autorização e funcionamento do jSecurity com esses conceitos. Usar o
jSecurity para fazer autenticação usando serviços de diretórios.
Uma abordagem sobre serviços de diretórios como sua finalidade, conceitos, estrutura física e lógica é um assunto que pode ocupar
horas e até dias de um desenvolvedor, visto que é um assunto a ser explanado por profissionais de infra-estrutura de rede. Vou fazer
aqui uma breve explicação de um domínio e sua árvore, para melhor entendimento sobre utilização do jSecurity com esse serviço.
Essas explicações tem a finalidade de deixar o desenvolver apto a conhecer objetos dentro de um domínio, usando-os para
autenticação com o jSecurity.
Serviço de diretório
Um diretório nada mais é que um banco de dados com informações sobre usuários, senhas e outros elementos necessários para o
funcionamento do sistema, quer seja um conjunto de aplicações no Mainframe, um grupo de servidores da rede local, o servidor de
email ou outro sistema qualquer.
Os sistemas como Active Directory, OpenLDAP ou ORACLE OID são produtos de fabricantes distintos que foram baseados em padrões
de diretórios, definidos por entidades internacionais de padronização.
Neste documento o termo diretório se refere a esse banco de informações.
LDAP
LDAP – Lightweight Directory Access Protocol - é um protocolo que oferece mecanismos de acesso a objetos em serviços de diretórios.
Oracle OID, OpenLDAP e Active Directory usam esse protocolo por padrão. Outros serviços de diretório podem usar o padrão x.500,
que devido a sua complexidade não é tão difundido no mercado. O protocolo LDAP fornece mecanismos de acesso aos objetos do Active
Directory ou OpenLDAP, de tal maneira que qualquer programa ou sistema habilitado ao padrão LDAP, seja capaz de acessar as
informações do Active Directory ou OpenLDAP, desde que devidamente identificado e tendo as devidas permissões. jSecurity faz acesso
a serviços de diretório somente pelo protocolo LDAP.
Domínio
Domínio é um limite administrativo e de segurança. Ele é um limite administrativo, pois as contas de Administrador têm permissões de
acesso em todos os recursos de seu domínio, mas não em outros domínios, a menos que sejam autorizadas. Ele é um limite de
segurança porque cada domínio tem definições de políticas de segurança que se aplicam as contas de usuários e demais recursos
dentro de seu domínio, e não em outros.
Um domínio é simplesmente um agrupamento lógico de contas e recursos, os quais compartilham políticas de segurança.
Dessa maneira, é importante deixar claro que Microsoft Active Directory não é um domínio. Esse produto da Microsoft implanta o
conceito de domínio, da mesma maneira que produtos como OpenLDAP.
Então temos diretórios como um banco de dados com informações necessárias ao funcionamento de determinados sistemas. Esses
diretórios podem ser acessados por diversos protocolos, como o LDAP que se tornou um padrão e é usado pelo jSecurity. Além disso,
há uma maneira de organizar logicamente os recursos de um diretório, estabelecendo barreiras administrativas e de segurança, essa
organização é conhecida como domínio.
Árvores de Domínio
Visto o conceito de diretório, LDAP e domínio, vou demonstrar o uso de um domínio em uma pequena empresa, montando uma árvore
de domínio, e no que se refere o uso do jSecurity.
Você trabalha em uma empresa com sede em Minas Gerais, o nome dessa empresa é Powerlogic, que possui os seguintes
departamentos: Suporte, Produtos, Fabrica, e Administrativo. Produtos possui duas áreas que são eCompany e jCompany. Para delegar
poder e limites sobre essa empresa, um domínio foi montado da seguinte maneira:
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
1
Figura 1-Raiz de um domínio
Reparem que uma árvore de domínio é uma organização hierárquica defina pela empresa que o utiliza, sendo a mais utilizada a divisão
por departamentos.
Todo domínio possui um domínio Root, que nesse exemplo é o powerlogic.com.br. Todas as divisões do domínio herdam o nome de seu
ancestral imediato. Por exemplo: o departamento suporte herdou o nome powerlogic.com.br, que é seu ancestral. Ecompany herdou
produtos, que herdou powerlogic.com.br, assumindo o nome ecompany.produtos.powerlogic.com.br.
Para jSecurity esse exemplo é valido porque: em todo domínio os usuários cadastrados ficam contidos em uma dessas divisões, que
devem ser indicadas para na configuração do módulo de autenticação. O mesmo vale para os grupos de usuários, que também estarão
contido em uma ou mais partes do domínio.
Nomenclatura de objetos no domínio
O padrão LDAP define um sistema de nomeação hierárquico, através do qual é possível referenciar qualquer objeto do diretório como
Active Directory ou OpenLDAP.
Um nome LDAP é formado pelo caminho completo do objeto, partindo do domínio raiz, até chegar ao objeto referenciado. Nesta
nomenclatura hierárquica são utilizadas algumas abreviaturas, conforme descrito a seguir:
•
•
•
•
•
CN: common name: por exemplo o nome da conta de um usuário, grupo ou computador.
OU: faz referência a uma unidade organizacional (unidades organizacionais são divisões lógicas de segurança dentro de um
domínio, como a área de Produtos e Infra-estrutura Interna que existe dentro de Suporte).
DC: domain component: um componente do domínio. Normalmente o nome de um domínio.
O: organization: Nome da organização. Normalmente representado pelo nome do domínio Root.
C: Country: Identificação de país. Não é normalmente utilzado.
Para entender como é o formato de nome no LDAP, é melhor analisarmos alguns exemplos. Considere os exemplos a seguir:
•
•
CN=vinicius.assis,OU=produtos,DC=suporte,DC=powerlogic.com.br. Este nome representa o usuário vinicius.assis, cuja
conta está incluída na unidade organizacional produtos, no domínio suporte.powerlogic.com.br (observe que foram
agrupados
dois
componentes
de
domínio.
O
nome
também
estaria
completo
da
seguinte
forma:
CN=vinicius.assis,OU=produtos,DC=suporte,DC=powerlogic,DC=com,DC=br).
“CN=João.ferreira,OU=servidores,OU=infra estrutura interna,DC=suporte,DC=powerlogic,DC=com,DC=br” -> Este nome
representa o usuário João.ferreira, cuja conta está contida na unidade organizacional servidores, a qual está contida dentro
da unidade organizacional infra estrutura interna do domínio suporte.powerlogic.com.br.
Obs.: o nome acima foi contido dentro de aspas devido a possuir espaços.
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
2
Dentro de um domínio existem containers para abrigar determinar tipos de objetos. Containers abrigam usuários, grupos, contas de
computadores etc. Em estruturas organizadas de um domínio, geralmente os usuários ficam em um container denominado Users para
contas de usuários, e outro denominado Groups para grupos de usuários. Em uma instalação padrão de Active Directory, tanto usuários
como grupos de usuários ficam no mesmo container Users.
Usando o jSecurity para autenticação em um serviço de diretório
Para configurar jSecurity para usar um serviço de diretório para autenticação, as seguintes informações devem ser obtidas com o
administrador de rede:
•
•
•
•
•
Nome hierárquico do domínio. De preferência a raiz completa do domínio.
Container que estão localizados os usuários.
Container onde estão localizados os grupos de usuários.
Usuário e senha com permissão para acessar os containers de usuários e grupos de usuários.
URL de conexão ao servidor. Serviço, endereço e porta.
Tendo o domínio Powerlogic como exemplo, vamos configurar a autenticação pelo jSecurity usando os usuários desse diretório.
Respostas as perguntas acima:
•
•
•
•
•
Nome hierárquico do domínio: powerlogic.com.br. A raiz completa se encontra na figura.
Container que estão localizados os usuário: usuarios
Container onde estão localizados os grupos de usuários: grupos
Usuário e senha com permissão para acessar os containers de usuários e grupos de usuários: administrador
URL de conexão ao servidor. Serviço, endereço e porta: ldap://powerldap:389
A figura abaixo ilustra a localização dos containers Grupos e Usuarios dentro da raiz do domínio. Esses containers geralmente não são
vistos em diagramas que demonstram a estrutura física de um domínio, porque são unidades lógicas que não compõem raízes dentro
da árvore do domínio. São objetos do domínio.
Na nomenclatura do padrão LDAP, um componente do domínio, como o departamento Suporte, é um DC, enquanto um container é um
CN. Por isso será comum não encontrar esses containers nos diagramas usados em departamentos de infra-estrutura.
Figura 2-Raiz de um domínio contendo containers
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
3
Então temos os seguintes nomes compostos no padrão LDAP:
•
•
•
Container que estão localizados os usuário: CN=usuarios,DC=powerlogic,DC=com,DC=br.
Container onde estão localizados os grupos de usuários: CN=grupos,DC=powerlogic,DC=com,DC=br
Usuário
e
senha
com
permissão
para
acessar
os
containers
de
usuários
e
grupos
CN=administrador,CN=grupos,DC=powerlogic,DC=com,DC=br.
de
usuários:
Esses nomes serão usados no arquivo de autenticação do jSecurity, login.config, no módulo LDAPLoginModule:
jsecurity {
};
com.powerlogic.jsecurity.jaas.LDAPLoginModule required
connectionName=" "
connectionPassword=" "
connectionURL=" "
roleBase=" "
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"
userBase=" "
userRoleName="member"
userSearch="sAMAccountName={0}"
userSubtree="true";
Onde:
com.powerlogic.jsecurity.jaas.LDAPLoginModule: classe de autenticação do jSecurity, existente no jar jcompany_jsecurity_jaas_jar3.3.0.1-SNAPSHOT.jar
required: flag usada para trabalhar com mais de um módulo de autenticação.
connectionName: usuário de conexão ao diretório.
connectionPassword: senha do usuário de conexão ao diretório. Com máscara de HASH.
connectionURL: endereço de conexão ao diretório.
roleBase: container de grupo de usuários.
roleName="cn": flag para indicação de objetos dentro do diretório. Padrão.
roleSearch="(member={0})": indica que a associação entre usuários e grupos dentro do diretório é feita pelo atributo member.
Padrão.
roleSubtree="true": habilita a pesquisa para grupos entre a raiz do domínio, além do container indicado para grupos de usuários.
userBase=" ": container de usuários.
userRoleName="member": indica que a associação entre usuários e grupos dentro do diretório é feita pelo atributo member. Padrão.
userSearch="sAMAccountName={0}"
userSubtree="true": habilita a pesquisa para grupos entre a raiz do domínio, além do container indicado para grupos de usuários.
Em nosso exemplo, o módulo de autenticação ficaria da seguinte forma:
jsecurity {
};
com.powerlogic.jsecurity.jaas.LDAPLoginModule required
connectionName="cn=administrador,cn=usuarios,dc=powerlogic,dc=com,dc=br "
connectionPassword="46548716546dasddadsadbacbkf "
connectionURL=" ldap://powerldap:389"
roleBase=" cn=grupos,dc=powerlogic,dc=com,dc=br "
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"
userBase=" cn=usuarios,dc=powerlogic,dc=com,dc=br "
userRoleName="member"
userSearch="sAMAccountName={0}"
userSubtree="true";
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
4
Conforme será visto adiante, há a possibilidade, e em alguns casos necessidade, de usar banco de dados e diretórios ao mesmo tempo
para autenticação. Em cenários como esse, o arquivo de autenticação conterá o módulo de autenticação em banco e diretório como a
seguir:
jsecurity {
};
com.powerlogic.jsecurity.jaas.JSecurityLoginModule required
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@plcdb:1521:oraplcdb"
usuario=" "
senha=" "
digest="SHA";
Módulo de autenticação em banco de dados
com.powerlogic.jsecurity.jaas.LDAPLoginModule required
connectionName="cn=administrador,cn=usuarios,dc=powerlogic,dc=com,dc=br "
connectionPassword="46548716546dasddadsadbacbkf "
connectionURL=" ldap://powerldap:389"
roleBase=" cn=grupos,dc=powerlogic,dc=com,dc=br "
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"
userBase=" cn=usuarios,dc=powerlogic,dc=com,dc=br "
userRoleName="member"
userSearch="sAMAccountName={0}"
userSubtree="true";
Módulo de autenticação em serviço de diretório
A única alteração foi a inserção do módulo de autenticação em banco de dados, já conhecido, logo acima do módulo de autenticação
em serviço de diretório.
Existem alguns casos onde é necessária a recuperação de usuários em lugares distintos no diretório, ou mesmo em diretórios
diferentes. Em casos assim, adicione um módulo de autenticação para cada diretório.
jsecurity {
com.powerlogic.jsecurity.jaas.JSecurityLoginModule required
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@plcdb:1521:oraplcdb"
usuario=" "
senha=" "
digest="SHA";
Módulo de autenticação em banco de dados
com.powerlogic.jsecurity.jaas.LDAPLoginModule required
connectionName="cn=administrador,cn=usuarios,dc=powerlogic,dc=com,dc=br "
connectionPassword="46548716546dasddadsadbacbkf "
connectionURL=" ldap://powerldap:389"
roleBase=" cn=grupos,dc=powerlogic,dc=com,dc=br "
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"
userBase=" cn=usuarios,dc=powerlogic,dc=com,dc=br "
userRoleName="member"
userSearch="sAMAccountName={0}"
userSubtree="true";
Módulo de autenticação em serviço de diretório
com.powerlogic.jsecurity.jaas.LDAPLoginModule required
connectionName="cn=administrator,cn=usuarios,dc=powerlogic,dc=com "
connectionPassword="7778979dsaasd8716546daaddsag "
connectionURL=" ldap://powerldap:389"
roleBase=" cn=groups,dc=powerlogic,dc=com "
roleName="cn"
roleSearch="(member={0})"
roleSubtree="true"
userBase=" cn=users,dc=powerlogic,dc=com "
userRoleName="member"
userSearch="sAMAccountName={0}"
userSubtree="true";
Módulo de autenticação em serviço de diretório
};
No exemplo acima, a empresa Powerlogic possui dois domínios: o powerlogic.com.br para sua matriz, e o powerlogic.com.br para suas
instalações no exterior. Com essas configurações, será possível usar os usuários dos dois domínios.
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
5
Usando bases de dados e diretórios para autenticação
Antes de prosseguir, é necessário explorar dois conceitos que serão bastante usados nessa parte do tutorial: autenticação e
autorização.
Autenticação é o processo de reconhecimento dos dados que são recebidos, comparando-os com os dados existentes, e verificando se o
transmissor que fez a requisição é, na verdade, o transmissor real.
Autorização é o processo de conceder ao requisitante acesso a objetos que ele tem permissão. Tais objetos podem ser dados, sistemas,
equipamentos ou qualquer objeto que deva ter acesso restrito. A autorização ocorre após a autenticação da identidade do requisitante.
JSecurity usa diretórios somente para autenticação. Todas as regras de autorização estão armazenadas em banco de dados. Isso
acontece pois os serviços de diretório não permitem o cadastro de todas as informações necessárias as regras de autorização. A
utilização de banco de dados tem como resultado uma administração mais flexível e menos intrusiva.
É possível usar somente serviços de diretórios para prover a segurança de suas aplicações J2EE. O impacto que isso causa é a perda
das funcionalidades de autorização que ficam cadastradas em banco de dados. Em ambientes usando somente diretórios, a segurança é
feita através de segurança programática ou declarativa, o que fere totalmente a arquitetura e benefícios do jSecurity.
O papel do serviço de diretórios junto com o jSecurity é adequar as regras de segurança para aplicações J2EE ao ambiente atual de sua
organização. Usando serviços de diretório para autenticação, os usuários, senhas e grupos atuais são reutilizados, não sendo necessária
a criação de novos logins e senhas para os atuais usuários. Todo esse cadastro permanece no diretório atual.
Figura 3-Login usando banco de dados e diretório
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
6
Requisitante
Fornece
dados de acesso
jSecurity
Validar dados de acesso
[Não]
Solicitar novamente os
dados de acesso
Dados de acesso
são válidos?
[Sim]
Verificar existência
de banco de dados
Há banco de dados
para autorização?
[Sim]
[Não]
Fazer validação
por banco de dados
Fazer validação
pela aplicação
Regras de segurança
programática permitem
acesso com as roles do
requisitante?
[Sim]
[Sim]
Existem regras de
autorização para as roles
do usuário?
[Não]
[Não]
Fazer verificação das roles existentes
com as que o requisitante possui
[Não]
Negar acesso
Regras de segurança
concedem autorização de
acesso ao requisitante?
[Sim]
Conceder acesso
Figura 4-Autenticação usando diretório
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
7
Aplicando segurança a usuários e grupos
É possível na aplicação web atribuir regras de segurança, perfis, a grupos de usuários ou usuários explícitos. De acordo com o diagrama
abaixo, quando um usuário faz logon na aplicação, com seu usuário cadastrado no serviço de diretório, jSecurity carrega todos os
grupos de usuários associados a esse login, entra em contato com o banco de dados e verifica se há um usuário cadastrado com o
mesmo login.
Se não houver login idêntico cadastrado, jSecurity usa somente os grupos do usuário associados no diretório. Verifica se há alguma
regra de segurança cadastrada para algum desses grupos e nega ou concede acesso de acordo com essas regras.
Se houver login idêntico cadastrado no banco de dados, jSecurity faz a união dos grupos associados ao usuário no diretório e banco de
dados. Verifica se há alguma regra de segurança cadastrada para algum desses grupos, ou para o usuário explicitamente e nega ou
concede acesso de acordo com essas regras.
Cenários de uso
Exemplo 1 – usuário cadastrado somente no diretório. Regra de segurança atribuída para grupo.
Existe no jSecurity uma regra de segurança que determina que os usuários participantes do grupo Acessa RH terão acesso permitido ao
sistema de cadastrado de funcionários chamado PowerRH.
No serviço de diretório existe um usuário com login carlos.alberto que é participante do grupo Acessa RH, também cadastrado no
diretório. Não há um usuário com login carlos.alberto cadastrado no banco de dados.
O usuário com login carlos.alberto deseja acessar o sistema PoweRH. A partir do momento que ele insere seu login e senha válidos,
jSecurity faz as seguintes verificações:
•
•
•
•
•
Verifica que o sistema a ser acessado é o PowerRH.
Verifica que o usuário carlos.alberto é integrante do grupo Acessa RH dentro do diretório.
Verifica que não há um login carlos.alberto no banco de dados.
Verifica que para acessar a aplicação PowerRH é necessário fazer parte do grupo Acessa RH.
Como verificou que o usuário carlos.alberto faz parte do grupo Acessa RH, concede acesso ao usuário.
Exemplo 2 – usuário cadastrado no diretório e banco de dados. Regra de segurança atribuída para grupo.
Existe no jSecurity uma regra de segurança que determina que os usuários participantes do grupo Logistica terão acesso permitido ao
sistema de cadastrado de logística chamado PowerTransp.
No serviço de diretório existe um usuário com login justino.alves que é participante do grupo Matriz, também cadastrado no diretório.
Há também um usuário com login justino.alves cadastrado no banco de dados, que é integrante do grupo Logistica.
O usuário com login justino.alves deseja acessar o sistema PowerTrans. A partir do momento que ele insere seu login e senha válidos,
jSecurity faz as seguintes verificações:
•
•
•
•
Verifica que o sistema a ser acessado é o PowerTrans.
Verifica que o usuário justino.alves é integrante do grupo Matriz dentro do diretório.
Verifica que há um usuário com login justino.alves no banco de dados, que faz parte do grupo Logistica.
Faz a união do grupos de diretório e banco de dados, tendo como resultado final o usuário justino.alves integrante dos
grupos Matriz e Logistica.
•
Verifica que para acessar a aplicação PowerTrans é necessário fazer parte do grupo Logistica.
Como verificou que o usuário justino.alves faz parte do grupo Logistica, concede acesso ao usuário.
Exemplo 3 – usuário cadastrado no diretório e banco de dados. Regra de segurança atribuída para usuário.
Existe no jSecurity uma regra de segurança que determina que os usuários participantes do grupo Vendas terão acesso permitido ao
sistema de cadastrado de vendas chamado PowerSales.
No serviço de diretório existe um usuário com login paulo.alvim que é participante do grupo Matriz, também cadastrado no diretório. Há
também um usuário com login paulo.alvim cadastrado no banco de dados, que é integrante do grupo Diretoria.
O usuário com login paulo.alvim deseja acessar o sistema PowerSales. A partir do momento que ele insere seu login e senha válidos,
jSecurity faz as seguintes verificações:
•
•
•
•
Verifica que o sistema a ser acessado é o PowerSales.
Verifica que o usuário paulo.alvim é integrante do grupo Matriz dentro do diretório.
Verifica que há um usuário com login paulo.alvim no banco de dados, que faz parte do grupo Diretoria.
Faz a união do grupos de diretório e banco de dados, tendo como resultado final o usuário paulo.alvim integrante dos
grupos Matriz e Diretoria.
•
Verifica que para acessar a aplicação PowerSales é necessário fazer parte do grupo Vendas.
•
Verifica que também há uma regra, definindo que o usuário paulo.alvim, independente de grupo pode acessar a
aplicação PowerSales.
Como verificou que o usuário paulo.alvim faz parte dos grupo Matriz e Diretoria, mas não faz parte de Vendas, a principio negaria
acesso ao sistema PowerSales, mas como há uma regra que concede acesso independente de grupos a esse usuário, autoriza acesso a
aplicação.
Se nenhuma regra de segurança for atribuída a um usuário ou grupo de usuários, a ação padrão é permitir acesso. Isso acontece
porque todas as aplicações desenvolvidas com Powerlogic jCompany, possuem uma regra de segurança programática que concedem
acesso a todo usuário que é integrante do grupo principal Membros. Essa regra é padrão mas pode ser modificada.
Quando uma regra de segurança for construída para determinada finalidade, como permitir acesso a uma aplicação, somente os
usuários que estiverem sob essa regra terão acesso a aplicação.
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
8
Exemplo – Acesso sem regras de segurança
Não existe no jSecurity uma regra de segurança que concede acesso ao sistema PowerDir.
No serviço de diretório existem três usuários com login paulo.alvim, helson.queiroz e justino.alves que não são participantes de
nenhum grupo. Há também três usuários com login paulo.alvim, helson.queiroz e justino.alves cadastrado no banco de dados, que são
integrantes do grupo Membros.
Os três usuários desejam acessar o sistema PowerDir. A partir do momento que eles inserem seus login e senha válidos, jSecurity faz
as seguintes verificações:
•
•
•
•
Verifica que o sistema a ser acessado é o PowerDir.
Verifica que os usuários não são integrantes de nenhum grupo dentro do diretório.
Verifica que existem os mesmos usuários no banco de dados, que fazem parte do grupo Membros.
Faz a união dos grupos de diretório e banco de dados, tendo como resultado final os usuários integrantes do grupo
Membros.
•
Verifica que não há regra de segurança para acessar a aplicação PowerDir. Mas existe uma regra de segurança
programática dentro da aplicação PowerDir que concede acesso a todos os usuários integrantes do grupo Membros.
Como verificou que os usuários fazem parte do grupo Membros, e que não há regra de segurança para acesso a aplicação PowerDir, e
que essa aplicação possui uma regra de segurança programática concedendo acesso aos integrantes do grupo Membros, o acesso a
aplicação é permitido.
Foram feitas algumas mudanças para acesso à aplicação Powerdir que são:
•
Foi construída uma regra de segurança para acesso a aplicação PowerDir, onde somente os integrantes do grupo
Diretoria terão acesso a esse sistema.
•
Os usuários paulo.alvim e helson.queiroz foram incluídos no grupo Diretoria.
•
O usuário justino.alves não passou por alteração de grupos.
Após essas alterações, os resultados foram:
•
Quando os usuário paulo.alvim e helson.queiroz acessaram o sistema PowerDir, o acesso foi permitido.
•
Quando o usuário justino.alves acessou a aplicação, o acesso foi negado.
Isso acontece porque quando uma regra de segurança é construída, somente terá direito de acesso quem estiver sob essa regra. Assim
não é preciso construir uma regra de permissão para o grupo Diretoria, e uma regra de negação para os outros usuários.
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
9
Requisitante
Fornece
dados de acesso
jSecurity
Validar dados de acesso
[Não]
Solicitar novamente os
dados de acesso
Dados de acesso
são válidos?
[Sim]
Carregar grupos associados ao usuário
no serviço de diretório
Fazer verificação de usuário existente
no banco de dados
Existe usuário com o
mesmo login no diretório
e banco de dados?
[Sim]
[Não]
Usar somente os grupos
associados no diretório
Fazer união dos grupos associados ao usuário
no diretório e banco de dados
Verificar regras de acesso
para grupos de usuários
Existem regras de acesso
para os grupos que o
usuário está associados?
[Sim]
[Não]
Verificar se há regras
específicas para o usuário
[Não]
Verificar se há regras
específicas para o usuário
Existem regras de acesso
específicas para o usuário?
Existem regras
atribuídas ao
usuário?
[Sim]
[Não]
[Sim]
Permitir ou negar acesso de acordo com as
regras definidas para os grupos que o usuário pertence
Permitir ou negar acesso de acordo com as
regras definidas para o usuário e grupos
Conceder acesso
Figura 5-Autenticação usando diretório e banco de dados
Powerlogic Consultoria e Sistemas | Usando serviços de diretório para autenticação com o jSecurity
31 de julho de 2007
Autor: Vinicius Emmanuel de Assis
10