Login doesn't work
juergen.zimmermann Aug 18, 2009 10:04 AMI'm using Embedded JBoss beta3.SP9. All tests are working fine as long as I don't use a security domain
Using the EJB jar within an EAR inside JBossAS 5.1 (inclusive security domain) also works fine.
Any hint for setting up the login mechanism with Embedded JBoss is appreciated.
bootstrap/conf/login-config.xml:
<?xml version='1.0'?> <!DOCTYPE policy PUBLIC "-//JBoss//DTD JBOSS Security Config 3.0//EN" "http://www.jboss.org/j2ee/dtd/security_config.dtd"> <policy> <application-policy name="hska"> <authentication> <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required"> <module-option name="dsJndiName">java:/hskaDS</module-option> <module-option name="unauthenticatedIdentity">anonymous</module-option> <module-option name="principalsQuery"> SELECT password FROM kunde WHERE username=? </module-option> <module-option name="rolesQuery"> SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=? </module-option> <module-option name="hashAlgorithm">SHA-1</module-option> <module-option name="hashEncoding">base64</module-option> </login-module> </authentication> </application-policy> </policy>
META-INF/jboss.xml:
<?xml version="1.0"?> <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 5.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_5_0.dtd"> <jboss> <security-domain>hska</security-domain> </jboss>
Code fragment for login:
final Properties loginProps = new Properties(); loginProps.setProperty(Context.SECURITY_PRINCIPAL, "2"); loginProps.setProperty(Context.SECURITY_CREDENTIALS, "2"); loginProps.setProperty(Context.SECURITY_PROTOCOL, "hska"); ctx = new InitialContext(loginProps); LOGGER.info("Completed new InitialContext(loginProps)"); ... LOGGER.info("Invoking the secured method");
The log shows "User '2' authenticated, loginOk=true", but for the later authentication the user "anonymous" is used (Why ?):
TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] ctor, contextID=hskaTest.jar TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=admin, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "deleteKunde,,de.hska.kundenverwaltung.pojo.Kunde")[*:deleteKunde(de.hska.kundenverwaltung.pojo.Kunde)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=admin, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "deleteKundeById,,java.lang.Long,java.util.Locale")[*:deleteKundeById(java.lang.Long,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=mitarbeiter, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "createKunde,,de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale")[*:createKunde(de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=admin, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "createKunde,,de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale")[*:createKunde(de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=mitarbeiter, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "updateKunde,,de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale")[*:updateKunde(de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=admin, p=("javax.security.jacc.EJBMethodPermission" "KundenverwaltungBean" "updateKunde,,de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale")[*:updateKunde(de.hska.kundenverwaltung.pojo.Kunde,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] addToRole, roleName=kunde, p=("javax.security.jacc.EJBMethodPermission" "BestellverwaltungBean" "create,,de.hska.bestellverwaltung.pojo.Bestellung,java.util.Locale")[*:create(de.hska.bestellverwaltung.pojo.Bestellung,java.util.Locale)] TRACE [org.jboss.security.jacc.JBossPolicyConfiguration] commit TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] Begin getAppConfigurationEntry(hska), size=1 TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] End getAppConfigurationEntry(hska), authInfo=AppConfigurationEntry[]: [0] LoginModule Class: org.jboss.security.auth.spi.DatabaseServerLoginModule ControlFlag: Anmeldemodul-Steuerflag: required Options:name=hashAlgorithm, value=SHA-1 name=principalsQuery, value=SELECT password FROM kunde WHERE username=? name=unauthenticatedIdentity, value=anonymous name=hashEncoding, value=base64 name=dsJndiName, value=java:/hskaDS name=rolesQuery, value=SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] initialize TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Security domain: hska TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Saw unauthenticatedIdentity=anonymous TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Password hashing activated: algorithm = SHA-1, encoding = base64, charset = {default}, callback = null, storeCallback = null TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] DatabaseServerLoginModule, dsJndiName=java:/hskaDS TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] principalsQuery=SELECT password FROM kunde WHERE username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] rolesQuery=SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] suspendResume=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] login TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] suspendAnyTransaction TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Excuting query: SELECT password FROM kunde WHERE username=?, with username: 2 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Obtained user password TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] resumeAnyTransaction TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] User '2' authenticated, loginOk=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] commit, loginOk=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] getRoleSets using rolesQuery: SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=?, username: 2 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] suspendAnyTransaction TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Excuting query: SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=?, with username: 2 TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Assign user to role mitarbeiter TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Assign user to role kunde TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] resumeAnyTransaction INFO [de.hska.test.KundenverwaltungTest] Completed new InitialContext(loginProps) INFO [de.hska.test.KundenverwaltungTest] Invoking the secured method TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] Begin isValid, principal:null, cache info: null TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] defaultLogin, principal=null TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] Begin getAppConfigurationEntry(hska), size=1 TRACE [org.jboss.security.auth.login.XMLLoginConfigImpl] End getAppConfigurationEntry(hska), authInfo=AppConfigurationEntry[]: [0] LoginModule Class: org.jboss.security.auth.spi.DatabaseServerLoginModule ControlFlag: Anmeldemodul-Steuerflag: required Options:name=hashAlgorithm, value=SHA-1 name=principalsQuery, value=SELECT password FROM kunde WHERE username=? name=unauthenticatedIdentity, value=anonymous name=hashEncoding, value=base64 name=dsJndiName, value=java:/hskaDS name=rolesQuery, value=SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] initialize TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Security domain: hska TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Saw unauthenticatedIdentity=anonymous TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Password hashing activated: algorithm = SHA-1, encoding = base64, charset = {default}, callback = null, storeCallback = null TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] DatabaseServerLoginModule, dsJndiName=java:/hskaDS TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] principalsQuery=SELECT password FROM kunde WHERE username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] rolesQuery=SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=? TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] suspendResume=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] login TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Authenticating as unauthenticatedIdentity=anonymous TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] User 'anonymous' authenticated, loginOk=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] commit, loginOk=true TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] getRoleSets using rolesQuery: SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=?, username: anonymous TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] suspendAnyTransaction TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] Excuting query: SELECT role, 'Roles' FROM hska_role r INNER JOIN kunde k ON r.kunde_fk = k.k_id WHERE k.username=?, with username: anonymous TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] No roles found TRACE [org.jboss.security.auth.spi.DatabaseServerLoginModule] resumeAnyTransaction TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] defaultLogin, lc=javax.security.auth.login.LoginContext@1b18970, subject=Subject(28334428).principals=org.jboss.security.SimplePrincipal@12240026(anonymous)org.jboss.security.SimpleGroup@29462573(Roles(members)) TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] updateCache, inputSubject=Subject(28334428).principals=org.jboss.security.SimplePrincipal@12240026(anonymous)org.jboss.security.SimpleGroup@29462573(Roles(members)), cacheSubject=Subject(31404820).principals=org.jboss.security.SimplePrincipal@12240026(anonymous)org.jboss.security.SimpleGroup@29462573(Roles(members)) TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] Inserted cache info: org.jboss.security.plugins.auth.JaasSecurityManagerBase$DomainInfo@1135d34[Subject(31404820).principals=org.jboss.security.SimplePrincipal@12240026(anonymous)org.jboss.security.SimpleGroup@29462573(Roles(members)),credential.class=null,expirationTime=1250605678749] TRACE [jboss.security.plugins.auth.JaasSecurityManagerBase.hska] End isValid, true TRACE [org.jboss.security.audit.providers.LogAuditProvider] [Success]Source=org.jboss.security.integration.ejb.EJBAuthenticationHelper;principal=null;method=findKunden; TRACE [org.jboss.security.SecurityRolesAssociation] Setting threadlocal:{}