Criando Security Domain Baseados em Banco de Dados no JBoss AS 7

Postado em Atualizado em

Prometo que no próximo post, vou falar um pouco sobre teoria e explicar tudo o que fiz até agora. Mas se você é como eu que gosta de ver funcionando rapidamente, então deixa a teoria para depois. Mas lembrando de que é importantíssimo ler muito a documentação e saber como realmente tudo funciona.

Inicialmente vamos gerar a nossa senha utilizando um algoritmo SHA-256. Para isso Crie uma Class com um método main e utilize a Class Util da biblioteca picketbox-4.0.1.jar, que é padrão no JBoss AS 7.

Podemos utilizar a biblioteca do próprio JBoss AS 7, que se encontra no seguinte diretório:

/opt/jboss-as-7.0.1.Final/modules/org/picketbox/main/picketbox-4.0.1.jar
import org.jboss.security.auth.spi.Util;

public class SecurityData {

public static Util util;

public static void main(String[] args) {
   System.out.println(util.createPasswordHash("SHA-256", "BASE64", null, null, "senhaqualquer"));
  }
}

Ao Executarmos essa classe podemos observar que o seguinte Hash é gerado:

 3m1PSM95l6zoPQWE+hqsww0LWG+0r/m3mFIqdQgOhCI=

Esse Hash que deverá ser armazenado em nosso banco de dados.

Se você não criou o Data Source, consulte o post https://jbossdivers.wordpress.com/2011/08/29/configurando-data-source-no-jboss-as-7/ , por que o utilizaremos no nosso Security Domain.

Inicialmente deve-se criar um banco de dados e as respectivas tabelas para armazenar os Papéis (Roles), usuário e senhas:

 create database authority;
 create user authority identified by 'authsecret'
 grant all privileges on authority.* to 'authority'@'%.%.%.%' identified by "authsecret";
 create table users_asnew (username varchar(32) not null primary key,password varchar(100) not null);
 create table roles_asnew (username varchar(32) not null,rolename varchar(32) not null,primary key (username, rolename));
 insert into users_asnew (username, password) values ("darthvader", '3m1PSM95l6zoPQWE+hqsww0LWG+0r/m3mFIqdQgOhCI='));
 insert into roles_asnew values ("darthvader", "Admin");
 update users_asnew set password = '3m1PSM95l6zoPQWE+hqsww0LWG+0r/m3mFIqdQgOhCI=' where username = 'darthvader'

Edite o arquivo:

 vim /opt/jboss-as-7.0.1.Final/standalone/configuration/standalone.xml

Agora encontre o Subsystem  “<subsystem xmlns=”urn:jboss:domain:security:1.0″>” e entre as tags <security-domains>
Insira o conteúdo abaixo.


<security-domain name="mylogin" cache-type="default">
   <authentication>
     <login-module code="Database" flag="required">
       <module-option name="dsJndiName" value="java:/MySQLDS"/>
       <module-option name="principalsQuery" value="select password from users_asnew where username=?"/>
       <module-option name="rolesQuery" value="select rolename, 'Roles' from roles_asnew where username=?"/>
       <module-option name="hashAlgorithm" value="SHA-256"/>
       <module-option name="hashEncoding" value="base64"/>
       </login-module>
   </authentication>
</security-domain>

Pronto, o domínio de segurança baseado em banco de dados está criado. No próximo post vou explicar como as coisas funcionam e criaremos uma aplicação web para utilizar o Security Domain mylogin que nós acabamos de criar .

Abraço!

Fonte: https://docs.jboss.org/author/display/AS7/Documentation

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s