Da ich üblicherweise sowieso überall die selbe Authentifizierungsmethode (org.jboss.security.auth.spi.DatabaseServerLoginModule) verwende, bin ich gerade dabei, den Login in ein Framework zu verpacken.
Jetzt habe ich das Problem, dass ein falscher Login nicht bei loginContext.login() erkannt wird, sondern erst wenn die erste Datenbankoperation passiert... Korrigiert mich falls das einfach nur ein Programmierfehler ist
Jedenfalls hatte ich es bisher so, dass ich in meiner projektspezifischen Login-Bean eine kurze Methode hatte, die entsprechend eine Abfrage gemacht hat mit dem aus dem Login resultierenden Principal Namen. Bei einem falschen Login hat dann diese die Exception geschmissen.
Jetzt wo das in ein Framework kommt, weiß ich ja noch nicht, wie die Datenbankstruktur bzw. Businessobjekte aussehen und kann deshalb keine Abfrage machen.
Eigentlich habe ich ja im Security-Descriptor schon die passenden Queries:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd">
<application-policy xmlns="urn:jboss:security-beans:1.0" xsi:schemaLocation="urn:jboss:security-beans:1.0 security-beans_1_0.xsd" name="DPMAM">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:/dpmam_ds</module-option>
<module-option name="principalsQuery">SELECT USER_PasswordMD5 FROM USERs WHERE USER_Name=?</module-option>
<module-option name="rolesQuery">SELECT USGR_Name, 'Roles' FROM USerGRoups
INNER JOIN USER_USGR_Zugehoerigkeit ON
USerGRoups.USGR_ID=USER_USGR_Zugehoerigkeit.USGR_ID
INNER JOIN USERs ON USER_USGR_Zugehoerigkeit.USER_ID=USERs.USER_ID
WHERE USERs.USER_Name=?</module-option>
</login-module>
</authentication>
</application-policy>
</deployment>
[/XML]
Komme ich im Code irgendwie an die ran? Dann könnte ich diese Query ausführen nach loginContext.login()...
Jetzt habe ich das Problem, dass ein falscher Login nicht bei loginContext.login() erkannt wird, sondern erst wenn die erste Datenbankoperation passiert... Korrigiert mich falls das einfach nur ein Programmierfehler ist
Jedenfalls hatte ich es bisher so, dass ich in meiner projektspezifischen Login-Bean eine kurze Methode hatte, die entsprechend eine Abfrage gemacht hat mit dem aus dem Login resultierenden Principal Namen. Bei einem falschen Login hat dann diese die Exception geschmissen.
Jetzt wo das in ein Framework kommt, weiß ich ja noch nicht, wie die Datenbankstruktur bzw. Businessobjekte aussehen und kann deshalb keine Abfrage machen.
Eigentlich habe ich ja im Security-Descriptor schon die passenden Queries:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="urn:jboss:bean-deployer:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd">
<application-policy xmlns="urn:jboss:security-beans:1.0" xsi:schemaLocation="urn:jboss:security-beans:1.0 security-beans_1_0.xsd" name="DPMAM">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="unauthenticatedIdentity">guest</module-option>
<module-option name="dsJndiName">java:/dpmam_ds</module-option>
<module-option name="principalsQuery">SELECT USER_PasswordMD5 FROM USERs WHERE USER_Name=?</module-option>
<module-option name="rolesQuery">SELECT USGR_Name, 'Roles' FROM USerGRoups
INNER JOIN USER_USGR_Zugehoerigkeit ON
USerGRoups.USGR_ID=USER_USGR_Zugehoerigkeit.USGR_ID
INNER JOIN USERs ON USER_USGR_Zugehoerigkeit.USER_ID=USERs.USER_ID
WHERE USERs.USER_Name=?</module-option>
</login-module>
</authentication>
</application-policy>
</deployment>
[/XML]
Komme ich im Code irgendwie an die ran? Dann könnte ich diese Query ausführen nach loginContext.login()...