Pular para o conteúdo
Rafael Odon de Alencar

Rafael Odon de Alencar

Apenas mais um website pessoal desatualizado.

  • Home
  • Sobre
  • txt
    txt
  • dev
    dev
  • art
    art
  • Instagram (@rafael.odon)
  • Github (/rafaelodon)
  • Soundcloud (rafael-odon)
  • Flickr (rafaelodon)
  • Currículo Lattes

Categorias

  • art
  • dev
  • txt

Tags

  • applet
  • cdi
  • continuum
  • cvs
  • debian
  • eclipse
  • encoding
  • filter
  • gnome
  • hibernate
  • história
  • html
  • https
  • JAAS
  • JAR
  • jasper
  • java
  • java-ee
  • java-me
  • java-se
  • javascript
  • jboss
  • jee
  • jee6
  • jpa
  • JSF
  • jsf2
  • linux
  • livro
  • logging
  • maven
  • producer
  • python
  • reflexão
  • review
  • segurança
  • serialization
  • servlet
  • servlet 3.0
  • ssl
  • tomcat
  • utf8
  • WAR
  • webapp
  • weld

Tag: login-module

Integrando sua aplicação web com LDAP no JBoss EAP 6 através do JAAS

O Serviço de Autenticação e Autorização do Java (JAAS) é uma das pernas mais criticadas do Java EE, sendo usualmente alvo de reclames por demandar muita configuração para obter uma simples proteção com usuário e senha para uma página. O que pouca gente sabe é que o JAAS foi concebido para muito mais que isso, permitindo a criação de Login Modules plugáveis a serem reutilizados por diversas aplicações num mesmo container, torando-as independentes da tecnologia de segurança.

Tendo em vista essa possibilidade, os servidores de aplicação costumam já fornecer alguns Login Modules prontos, genéricos e configuráveis. Um deles é o Login Module para LDAP, o protocolo de diretório de acesso padrão para redes.

Abaixo demonstro uma configuração possível no Jboss EAP 6. Para tanto, suponha a existência de um LDAP onde há um usuário administrador chamado ldap-admin, (uid=ldap-admin,ou=admins,dc=suaempresa,dc=com,dc=br) cuja senha é 12345, e que tennha permissão para fazer buscas nesse diretório. Além disso, os demais usuários dessa rede podem ser uniqueMember de grupos do domínio dc=suaempresa,dc=com,dc=br.

No standalone.xml do seu JBoss, inclua o seguinte domínio de segurança:

<security-domain name="ldap-suaempresa">
	<authentication>
		<login-module code="LdapExtended" flag="required">
			<module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
			<module-option name="java.naming.provider.url" value="ldap://ldap.suaempresa.com.br"/>
			<module-option name="java.naming.security.authentication" value="simple"/>
			<module-option name="bindDN" value="uid=ldap-admin,ou=admins,dc=suaempresa,dc=com,dc=br"/>
			<module-option name="bindCredential" value="12345"/>
			<module-option name="baseCtxDN" value="dc=suaempresa,dc=com,dc=br"/>
			<module-option name="baseFilter" value="(uid={0})"/>
			<module-option name="rolesCtxDN" value="dc=suaempresa,dc=com,dc=br"/>
			<module-option name="roleFilter" value="(uniqueMember={1})"/>
			<module-option name="roleAttributeID" value="cn"/>
			<module-option name="throwValidateError" value="true"/>
		</login-module>
	</authentication>
</security-domain>

Perceba a presença dos parâmetros {0} e {1} nas opções do módulo. A opção {0} advém do nome de usuário digitado na caixa de login da aplicação. Aqui ela é usada para representar o uid do usuário no diretório LDAP. A opção {1} advém da role configurada para proteger um recurso da aplicação. Aqui ela é usada para representar o nome do grupo do qual o usuário em questão deve fazer parte no diretório LDAP.

Uma vez configurado isso, nas suas aplicações web onde seja desejado integrar com o LDAP será preciso criar o arquivo WEB-INF/jboss-web.xml solicitando o uso do serviço JAAS criado anteriormente:

<?xml version='1.0' encoding='UTF-8' ?>
<jboss-web> 
    <security-domain>java:/jaas/ldap-suaempresa</security-domain>
</jboss-web>

Além disso, será necessário configurar a segurança no WEB-INF/web.xml, usando os nomes dos grupos do LDAP como possíveis roles:

...
<security-constraint>
	<web-resource-collection>
		<web-resource-name>private_equipe1</web-resource-name>
		<description>recursos da equipe 1</description>
		<url-pattern>/private/equipe1/*</url-pattern>
	</web-resource-collection>
	<auth-constraint>
		<role-name>equipe1</role-name>
	</auth-constraint>
</security-constraint>

<login-config>
	<auth-method>BASIC</auth-method>
	<realm-name>Utilize a senha do LDAP da SuaEmpresa</realm-name>		
</login-config>
	
<security-role>
	<role-name>equipe1</role-name>		
</security-role>
...
Publicado em 17/03/201617/03/2016Autor Rafael Odon de AlencarCategorias devTags JAAS, java, jboss, ldap, login-module3 comentários em Integrando sua aplicação web com LDAP no JBoss EAP 6 através do JAAS
Orgulhosamente mantido com WordPress