JAAS no JBoss

Ae Galera,

Estou integrando JAAS no JBoss e estou com o seguinte problema.

Aparentemente a configuração está OK e a autenticação está sendo testada, mas eu nunca consigo me autenticar.

Imagino que estou encriptando a senha, ou guardando a mesma, de forma errada.

O JAAS no meu Realm no JBoss está configurado para BASE64, MD5, charset=ISO-8859-1.

Estou encriptando e gravando a senha no MySQL em um VARCHAR(255) da seguinte forma.

....
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.reset();
			this.senha = new String(md.digest(paramSenha.getBytes("ISO-8859-1")));

....
			st = con.prepareStatement("insert into usuario (login, senha, grupo) values (?, ?, ?)");
			
			st.setString(1, login);
			st.setString(2, senha);
....

Alguém pode me confirmar se isto está correto ?

Alguma dica do que pode estar ocorrendo ?

Valeu.

Olha só galera, descobri que quando gravo e recupero uma senha criptografada com MD5, por exemplo “a” criptografado, o MySQL engole alguns caracteres e substitui por “?”.

Por exemplo:
“a” criptografado

Áu¹Àñ¶¨1Ùâiw&a

“a” criptografado, gravado, recuperado do MySQL e depois exibido

Áu¹Àñ¶¨1Ã?âiw&a

O MySQL engoliu um caracter e colocou “?” no lugar.

Alguém pode me explicar o que está acontecendo ? Imagino que isso resolve meu problema.

tks

Simples
MD5 vai te gerar 1 array de bytes que não representam necessariamente uma String. Se voce transformar diretamente em uma vai ocorrer esses erros que voce viu.
Use base64 nos byte[] hashed.

Valeu louds.

Após um bom trampo eu consegui fazer funcionar.

O JBoss é muito bom mas tem uma coisa muito idiota na configuração do login-config.xml que me fez perder muito tempo. Um sql que retorna um ResultSet com 2 campos, o primeiro representa uma role do usuário, o segundo é fixo ‘Roles’ (este completamente desnecessário).

Valeu, agora funciona !

Olá PessoALL, não estou conseguindo configurar o JBOSS 4.0 para validar usuários no Firebird, alterei o policy do jmx-console para utilizar o datasource FirebirdDS criado conforme abaixo:

No arquivo login-config.xml a policy está desta forma:



<login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag = “required”>
<module-option name = “unauthenticatedIdentity”>guest</module-option>
<module-option name = “managedConnectionFactoryName”>jboss.jca:service=XaTxCM,name=FirebirdDS</module-option>
<module-option name = “principalsQuery”>SELECT USER_PASS PASSWD FROM USERS WHERE USER_NAME=?</module-option>
<module-option name = “rolesQuery”>SELECT USER_NAME ROLEID, ROLE_NAME ‘Roles’ FROM USER_ROLES WHERE USER_NAME=?</module-option>
</login-module>


O arquivo arquivo firebirdsql.rar está na pasta deploy!
O arquivo firebird-ds.xml está deta forma:

<?xml version=“1.0” encoding=“UTF-8”?>

<!-- ==================================================================== -->
<!-- New ConnectionManager setup for firebird dbs using jca-jdbc xa driver–>
<!-- Build jmx-api (build/build.sh all) and view for config documentation -->
<!-- ==================================================================== -->

<connection-factories>

<!–FBManager can be used to create and drop databases.
Drop is especially useful during testing, since it
assures a clean start next time. -->
<mbean code=“org.firebirdsql.management.FBManager” name=“jboss.jca:service=FirebirdManager”>
d:/firebird/database/tomcat.fdb
tomcat
159753
false
false
</mbean>

<tx-connection-factory>

<jndi-name>FirebirdDS</jndi-name>

<xa-transaction/>

<rar-name>firebirdsql.rar</rar-name>
<connection-definition>javax.sql.DataSource</connection-definition>

<config-property name=“Database” type=“java.lang.String”>localhost/3050:d:/firebird/database/tomcat.fdb</config-property>

tomcat

<password>159753</password>

<!–additional properties. only use one way of setting tx isolation, please
<config-property name=“TransactionIsolation”></config-property>
<config-property name=“TransactionIsolationName”>TRANSACTION_READ_COMMITTED</config-property>
<config-property name=“BlobBufferLength”></config-property>
<config-property name=“Encoding”>UNICODE_FSS</config-property>
–>

<min-pool-size>0</min-pool-size>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
–>

<!-- sql to call on an existing pooled connection when it is obtained from pool
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
–>

<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>Firebird</type-mapping>
</metadata>
</tx-connection-factory>

</connection-factories>

Há algo errado? Alguém pode me ajudar?