Hello,
I have a web application which Im trying to secure via an Active Directory 
server.  I have a Unit Test (configuration at end of post) derived from 
org.jboss.test.LoginModulesTestCase which connects and retrieves attributes 
(proving the login module can be poked to work).  When I try and configure the 
webapp to connect to AD I always get a stack and a bad password comment.  This 
happened in 4.0.3.sp1, and still with 4.0.4.sp1, can anyone spot something 
wrong with the login-config.xml?

I've reviewed the recently changed 
http://wiki.jboss.org/wiki/Wiki.jsp?page=LdapExtLoginModule page but I seem to 
be doing what is expected, here's my ticklist:

1. modified deploy/jbossweb-tomcat55.sar/server/xml to setup a SSL connector 
(see end for config).
2. have matched the WEB-INF/jboss-web.xml security-domain element to an entry 
in the server/conf/login-config.xml file
3. configured web-app to be secured, such that accesing its context triggers 
redirection to a login form, via SSL, and submits to j_security_check.

So In theory j_security_check is receiving the login user/pass and is passing 
them onto the ExtLdapLoginModule, but I keep geeting an invalid password (which 
it isnt!).

I have some thoughts I may have to specify an Iniital context provider in the 
ExtLdapModules jboss config, could this be the issue? (I happen to be running 
inside IBM 1.5 VM so com.sun wouldnd work if it were hard coded anywhere...)
 
Pointers? Ideas?

thanks in advance.
Andy.
=========

::jbossweb-tomcat55.sar/server.xml::

  |  <Connector port="8443" address="${jboss.bind.address}"
  |          maxThreads="100" strategy="ms" maxHttpHeaderSize="8192"
  |          emptySessionPath="true" algorithm="IbmX509"
  |          scheme="https" secure="true" clientAuth="false"
  |          keystoreFile="${jboss.server.home.dir}/conf/server.keystore"
  |          keystorePass="password" sslProtocol = "TLS" />
  | 

::login-config.xml::

  | <application-policy name="webapp">
  |     <authentication>
  |             <login-module 
code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" >
  |                     <module-option 
name="java.naming.provider.url">ldap://myserver.net:389/</module-option>
  |                     <module-option 
name="java.naming.security.authentication">simple</module-option>
  |                     <module-option name="bindDN">[EMAIL 
PROTECTED]</module-option>
  |                     <module-option 
name="bindCredential">password</module-option>
  |                     <module-option 
name="baseCtxDN">DC=mydomain,DC=net</module-option>
  |                     <module-option 
name="baseFilter">(sAMAccountName={0})</module-option>
  |                     <module-option 
name="roleFilter">(member={1})</module-option>
  |                     <module-option 
name="rolesCtxDN">DC=mycompany,DC=net</module-option>
  |                     <module-option 
name="roleAttributeID">memberOf</module-option>
  |                     <module-option 
name="roleAttributeIsDN">true</module-option>
  |                     <module-option 
name="roleNameAttributeID">cn</module-option>
  |                     <module-option name="roleRecursion">-1</module-option>
  |                             <module-option 
name="searchScope">ONELEVEL_SCOPE</module-option>
  |             </login-module>
  |     </authentication>
  | </application-policy>
  | 

::Configuration::

  |     AppConfigurationEntry[] testLdapExtLoginToActiveDirectory()
  |             {
  |                     String name = 
"org.jboss.security.auth.spi.LdapExtLoginModule";
  |                     HashMap options = new HashMap();
  |                     options.put("java.naming.factory.initial", 
"com.sun.jndi.ldap.LdapCtxFactory");
  |                     options.put("java.naming.provider.url", 
"ldap://myserver.net:389";);
  |                     options.put("java.naming.security.authentication", 
"simple");
  | 
  |                     options.put(BIND_DN, ACCESS_UID); 
  |                     options.put(BIND_CREDENTIAL, ACCESS_PASS);
  |                     options.put(BASE_CTX_DN, "dc=mycompnay,dc=net");
  |                     options.put(BASE_FILTER_OPT, "(sAMAccountName={0})");
  | 
  |                     options.put("rolesCtxDN", "dc=mycompany,dc=net");
  |                     options.put("roleFilter", "(member={1})");
  |                     options.put("roleAttributeID", "memberOf");
  |                     options.put("roleAttributeIsDN", "true");
  |                     options.put("roleNameAttributeID", "name");
  |                     options.put("roleRecursion", "-1");
  |                     options.put("searchTimeLimit","15000");
  |                     
  |                     
  |                     options.put("java.naming.referral","follow");
  |                     options.put(SEARCH_SCOPE_OPT,"SUBTREE_SCOPE");
  |                                     
  |                     AppConfigurationEntry ace = new 
AppConfigurationEntry(name, 
  |                             
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED, options);
  |                     AppConfigurationEntry[] entry = { ace };
  |                     return entry;
  |             }
  | 

::server.log Stacktrace::

  | 2006-02-09 16:58:37,051 DEBUG 
[org.jboss.security.auth.spi.LdapExtLoginModule] Failed to validate password
  | javax.naming.PartialResultException: Unprocessed Continuation Reference(s); 
remaining name 'DC=mycompany,DC=net'
  |         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2778)
  |         at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2752)
  |         at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1823)
  |         at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1746)
  |         at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1763)
  |         at 
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:409)
  |         at 
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:391)
  |         at 
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:373)
  |         at 
javax.naming.directory.InitialDirContext.search(InitialDirContext.java:278)
  |         at 
org.jboss.security.auth.spi.LdapExtLoginModule.rolesSearch(LdapExtLoginModule.java:403)
  |         at 
org.jboss.security.auth.spi.LdapExtLoginModule.createLdapInitContext(LdapExtLoginModule.java:340)
  |         at 
org.jboss.security.auth.spi.LdapExtLoginModule.validatePassword(LdapExtLoginModule.java:229)
  |         at 
org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:201)
  |         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
  |         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  |         at java.lang.reflect.Method.invoke(Method.java:615)
  |         at 
javax.security.auth.login.LoginContext.invoke(LoginContext.java:795)
  |         at 
javax.security.auth.login.LoginContext.access$000(LoginContext.java:209)
  |         at 
javax.security.auth.login.LoginContext$4.run(LoginContext.java:709)
  |         at 
java.security.AccessController.doPrivileged(AccessController.java:241)
  |         at 
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:706)
  |         at 
javax.security.auth.login.LoginContext.login(LoginContext.java:603)
  |         at 
org.jboss.security.plugins.JaasSecurityManager.defaultLogin(JaasSecurityManager.java:587)
  |         at 
org.jboss.security.plugins.JaasSecurityManager.authenticate(JaasSecurityManager.java:521)
  |         at 
org.jboss.security.plugins.JaasSecurityManager.isValid(JaasSecurityManager.java:330)
  |         at 
org.jboss.web.tomcat.security.JBossSecurityMgrRealm.authenticate(JBossSecurityMgrRealm.java:306)
  |         at 
org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:256)
  |         at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
  |         at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
  |         at 
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
  |         at 
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at 
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:788)
  | 2006-02-09 16:58:37,061 DEBUG 
[org.jboss.security.auth.spi.LdapExtLoginModule] Bad password for 
username=myuser
  | 

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3923940#3923940

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3923940


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to