|
Hy guys, i'm using for the first time jaas on JBoss so i wrote a simple program to test it. I'm using a jsp to autenthicate myself to JBoss using DatabaseServerLoginModule on a Sybase Database. My problem is, i never can authenticate, it seems that Principal object when it is passed to jboss authentication process is always null, but if change module login, for example UsersRolesLoginModule i success on it. These are the files i'm using: web.xml ... ... ... <!-- Define form login configuration --> <login-config> <auth-method>FORM</auth-method> <realm-name>WROX Bank Authentication</realm-name> <form-login-config> <form-login-page>/Login.jsp</form-login-page> <form-error-page>/LoginError.jsp</form-error-page> </form-login-config> </login-config> ---------------------------------------------------------
jboss.xml
<jboss>
<session>
<resource-ref>
<res-ref-name>jdbc/DSTest</res-ref-name>
<jndi-name>java:/DSTest</jndi-name>
</resource-ref>
<ejb-name>Account</ejb-name>
<jndi-name>ejb/Account</jndi-name>
<method-attributes>
</method-attributes>
</session>
<security-domain>java:/jaas/dbLogin</security-domain>
</jboss>
---------------------------------------------------
jboss-web.xml
<jboss-web>
<!-- Use the JAAS Database Security Module -->
<security-domain>java:/jaas/dbLogin</security-domain>
</jboss-web>
--------------------------------------------------
ejb-jar.xml
...
...
...
<!-- JDBC DataSources (java:comp/env/jdbc) -->
<resource-ref>
<description>The default DS</description>
<res-ref-name>jdbc/DSTest</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-----------------------------------------------
login-config.xml
<policy>
<!-- Used by clients within the application server VM such as
mbeans and servlets that access EJBs.
-->
<application-policy name = "dbLogin">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule"
flag="required">
<module-option name="dsJndiName">java:/DSTest</module-option>
<module-option name = "principalsQuery">select Password from Principals where PrincipalID=?</module-option>
<module-option name = "rolesQuery">select Role_db,RoleGroup from Roles where PrincipalID=?</module-option>
</login-module>
</authentication>
</application-policy>
-------------------------------------------
these are my tables on Sybase DB:
( Role is a keyword on Sybase so i modify the default table )
create table dbo.Principals
(
PrincipalID varchar(64) not null ,
Password varchar(64) not null,
Constraint Principals primary key nonclustered ( PrincipalID )
)
drop table Roles
go
create table dbo.Roles
(
PrincipalID varchar(64) not null ,
Role_db varchar(64) not null,
RoleGroup varchar(64) not null,
)
-----------------------------------------
and this is my ds file
<datasources>
<local-tx-datasource> <connection-url>jdbc:oracle:thin:@192.168.22.80:1521:BARBEPER</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>barbe</user-name>
<password>barbe</password>
<min-pool-size>5</min-pool-size>
<max-pool-size>20</max-pool-size>
<idle-timeout-minutes>0</idle-timeout-minutes>
<track-statements>true</track-statements>
<security-domain>dbLogin</security-domain>
</local-tx-datasource>
</datasources>
thanks for all
--
-----------------------------
Andrea Alimonti
Notio Srl
-----------------------------
|
