In a sentence, I want to configure JBoss 4.2.2 to use DatabaseServerLoginModule as the login-module for a Web application that is secured via Digest Authentication. The pro
In all examples I saw the role query looks a little different and always returns two columns:
select userRoles,'Roles' from UserRoles where username=?
Your query returns only one column.
I made test in my application and after removing these one extra column authentication stop working.
something like this be possible?
SELECT PASSWORD FROM SR_USER WHERE USERNAME=? AND IDCOMPANIA=?
SELECT r.ROLE_NAME, 'Roles'
FROM
SR_ROLE r, SR_USER_ROLE ur, SR_USER u
WHERE
u.USERNAME=? AND u.ID=ur.FK_USER_ID AND ur.FK_ROLE_ID=r.ID AND u.IDCOMPANIA?
Can you do something like this?
<application-policy name="secrest">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName">java:/SecRestDS</module-option>
<module-option name="principalsQuery">
SELECT PASSWORD FROM SR_USER WHERE USERNAME=? AND IDCOMPANIA=?
</module-option>
<module-option name="rolesQuery">
SELECT r.ROLE_NAME, 'Roles' FROM SR_ROLE r, SR_USER_ROLE ur, SR_USER u WHERE
u.USERNAME=? AND u.IDCOMPANIA=? AND u.ID=ur.FK_USER_ID AND ur.FK_ROLE_ID=r.ID
</module-option>
<module-option name="hashAlgorithm">MD5</module-option>
<module-option name="hashEncoding">rfc2617</module-option>
<module-option name="ignorePasswordCase">false</module-option>
<module-option name="hashStorePassword">true</module-option>
<module-option name="hashUserPassword">false</module-option>
<module-option name="storeDigestCallback">org.jboss.security.auth.spi.RFC2617Digest</module-option>
</login-module>
</authentication>
So I finally figured this one out. The key was the following:
<application-policy name="secrest">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName">java:/SecRestDS</module-option>
<module-option name="principalsQuery">
SELECT PASSWORD FROM SR_USER WHERE USERNAME=?
</module-option>
<module-option name="rolesQuery">
SELECT r.ROLE_NAME, 'Roles' FROM SR_ROLE r, SR_USER_ROLE ur, SR_USER u WHERE
u.USERNAME=? AND u.ID=ur.FK_USER_ID AND ur.FK_ROLE_ID=r.ID
</module-option>
<module-option name="hashAlgorithm">MD5</module-option>
<module-option name="hashEncoding">rfc2617</module-option>
<module-option name="ignorePasswordCase">false</module-option>
<module-option name="hashStorePassword">true</module-option>
<module-option name="hashUserPassword">false</module-option>
<module-option name="storeDigestCallback">org.jboss.security.auth.spi.RFC2617Digest</module-option>
</login-module>
</authentication>