users@glassfish.java.net

RE: JACC Intermittent problem

From: Vincent Deschênes <vdeschenes_at_stelvio.com>
Date: Sat, 20 Feb 2010 16:34:15 -0500

I have been able to reproduce the problem on our test server and to get the stack.

The stack is the same when there is a mixup username compared to when it is normal.

 

While trying to reproduce the problem I have noticed only trying web service calls is not enough.

It seams I have to login a couple of time a web user using the form based authentication.

 

The following is the stack when there is a problem for a web service call:

 

      at java.lang.Thread.dumpStack(Thread.java:1206)
      at com.stelvio.security.authentication.StelvioLoginModule.authenticateUser(StelvioLoginModule.java:46)
      at com.sun.appserv.security.AppservPasswordLoginModule.login(AppservPasswordLoginModule.java:141)
      at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
      at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
      at com.sun.enterprise.security.auth.login.LoginContextDriver.jmacLogin(LoginContextDriver.java:424)
      at
com.sun.enterprise.security.jmac.callback.BaseContainerCallbackHandler.processPasswordValidation(BaseContainerCallbackHandler.java:3
09)
      at
com.sun.enterprise.security.jmac.callback.BaseContainerCallbackHandler.processCallback(BaseContainerCallbackHandler.java:187)
      at
com.sun.enterprise.security.jmac.callback.ServerContainerCallbackHandler.handleSupportedCallbacks(ServerContainerCallbackHandler.jav
a:72)
      at com.sun.enterprise.security.jmac.callback.BaseContainerCallbackHandler.handle(BaseContainerCallbackHandler.java:173)
      at com.sun.enterprise.security.jmac.callback.ContainerCallbackHandler.handle(ContainerCallbackHandler.java:78)
      at com.sun.xml.wss.impl.misc.WSITProviderSecurityEnvironment.authenticateUser(WSITProviderSecurityEnvironment.java:740)
      at com.sun.xml.ws.security.opt.impl.incoming.UsernameTokenHeader.validate(UsernameTokenHeader.java:175)
      at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.handleSecurityHeader(SecurityRecipient.java:346)
      at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.cacheHeaders(SecurityRecipient.java:281)
      at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:223)
      at com.sun.xml.wss.provider.wsit.WSITServerAuthContext.verifyInboundMessage(WSITServerAuthContext.java:552)
      at com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:336)
      at com.sun.xml.wss.provider.wsit.WSITServerAuthContext.validateRequest(WSITServerAuthContext.java:246)
      at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:156)
      at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:127)
      at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
      at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:629)
      at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:588)
      at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:573)
      at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:470)
      at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:295)
      at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:515)
      at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:285)
      at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:143)
      at org.glassfish.webservices.Ejb3MessageDispatcher.handlePost(Ejb3MessageDispatcher.java:116)
      at org.glassfish.webservices.Ejb3MessageDispatcher.invoke(Ejb3MessageDispatcher.java:87)
      at org.glassfish.webservices.EjbWebServiceServlet.dispatchToEjbEndpoint(EjbWebServiceServlet.java:196)
      at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:127)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
      at com.sun.grizzly.http.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:195)
      at com.sun.grizzly.http.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:139)
      at com.sun.grizzly.http.servlet.ServletAdapter.doService(ServletAdapter.java:376)
      at com.sun.grizzly.http.servlet.ServletAdapter.service(ServletAdapter.java:329)
      at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
      at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
      at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
      at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
      at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
      at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
      at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
      at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
      at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
      at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
      at java.lang.Thread.run(Thread.java:619)
|#]

 

This is the stack when login a web user with the form based authentication:

 

      at java.lang.Thread.dumpStack(Thread.java:1206)
      at com.stelvio.security.authentication.StelvioLoginModule.authenticateUser(StelvioLoginModule.java:46)
      at com.sun.appserv.security.AppservPasswordLoginModule.login(AppservPasswordLoginModule.java:141)
      at sun.reflect.GeneratedMethodAccessor110.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
      at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
      at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
      at javax.security.auth.login.LoginContext.login(LoginContext.java:579)
      at com.sun.enterprise.security.auth.login.LoginContextDriver.doPasswordLogin(LoginContextDriver.java:341)
      at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:199)
      at com.sun.enterprise.security.auth.login.LoginContextDriver.login(LoginContextDriver.java:152)
      at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:478)
      at com.sun.web.security.RealmAdapter.authenticate(RealmAdapter.java:417)
      at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:265)
      at org.apache.catalina.authenticator.AuthenticatorBase.processSecurityCheck(AuthenticatorBase.java:970)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:575)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:615)
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
      at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:329)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:239)
      at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
      at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
      at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
      at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
      at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
      at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
      at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
      at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
      at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
      at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
      at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
      at java.lang.Thread.run(Thread.java:619)
|#]

 

 

Vincent

 

From: Vincent Deschênes [mailto:vdeschenes_at_stelvio.com]
Sent: Saturday, February 20, 2010 3:04 PM
To: users_at_glassfish.dev.java.net
Subject: RE: JACC Intermittent problem

 

Thanks for helping Kumar.

 

I have sent you my log file directly.

 

There is a call stack in the log when the error occurs but I am not sure this is what you want.

>>From the point of view of my login module I can not know I am in the mixup situation so I can not dump a call stack from there.

Unless I dump one everytime just for debuging. I will try that.

 

Thanks.

 

Vincent

 

 

From: Vbkumar.Jayanti_at_Sun.COM [mailto:Vbkumar.Jayanti_at_Sun.COM]
Sent: Saturday, February 20, 2010 1:57 AM
To: users_at_glassfish.dev.java.net
Subject: Re: JACC Intermittent problem

 

Vincent Deschênes wrote:

No, I am sorry I do not think our application would run on V2.
 
Were you able to find a way for the username to not be re-initialized between authentications ?
 
 
Could you point me out at which package and files to look at and how to obtains it.
I really need to understand the problem and fix it.
Maybe I could add some logs in glassfish code that would help understand the problem.
 
  

I tried looking a bit but was unable to figure out anything so far. I am keen to fix this problem too. Can you first set the
Security Logging Level to FINE. You will find the file
logging.properties in domains/domain1/config/

javax.enterprise.system.core.security.level=INFO

set the level to FINE and restart server.

And send me the logs. Also can you send me the call stack when this mixup is happening. I have a customer escalation which is
keeping me busy, i will try to reproduce ur problem.

regards,
kumar


regards,
kumar



VD