Thanks for the help.
I have successfully added these lines to the demo project without issue.
But I am still having the issue with my real application.
I am currently in the process of isolating the difference between the two. I have just updated my application to the same versions of shiro, pac4j and buji-pac4j as the demo project uses.
Without the timeout lines I see the following in the log:
2017-02-15T15:49:11.033+0000|Info: 2017-02-15 15:49:11,032 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.apache.shiro.mgt.DefaultSecurityManager | Context already contains a session. Returning.
2017-02-15T15:49:11.033+0000|Info: 2017-02-15 15:49:11,032 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.apache.shiro.subject.support.DefaultSubjectContext | No SecurityManager available in subject context map. Falling back to SecurityUtils.getSecurityManager() lookup.
2017-02-15T15:49:11.033+0000|Info: 2017-02-15 15:49:11,033 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.apache.shiro.web.servlet.SimpleCookie | Added HttpServletResponse Cookie [rememberMe=deleteMe; Path=/MyApplication; Max-Age=0; Expires=Tue, 14-Feb-2017 15:49:11 GMT]
2017-02-15T15:49:11.034+0000|Info: 2017-02-15 15:49:11,033 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.apache.shiro.mgt.AbstractRememberMeManager | AuthenticationToken did not indicate RememberMe is requested. RememberMe functionality will not be executed for corresponding account.
2017-02-15T15:49:11.034+0000|Info: 2017-02-15 15:49:11,033 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultCallbackLogic | redirectUrl: https://myhost:8181/MyApplication/
2017-02-15T15:49:11.092+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | === SECURITY ===
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | url: https://myhost:8181/MyApplication/
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | matchers: null
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | clients: CasClient
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | currentClients: [#CasClient# | callbackUrl: callback?client_name=CasClient | configuration: #CasConfiguration# | loginUrl: https://myhost:8181/cas | prefixUrl: https://myhost:8181/cas | protocol: CAS30 | renew: false | gateway: false | encoding: UTF-8 | logoutHandler: org.pac4j.cas.logout.CasSingleSignOutHandler@15ddc263 | acceptAnyProxy: false | allowedProxyChains: [] | proxyReceptor: null | timeTolerance: 1000 | |]
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | loadProfilesFromSession: true
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | profiles: [#CasProfile# | id: test | attributes: {isFromNewLogin=true, authenticationDate=Wed Feb 15 15:49:10 GMT+00:00 2017, displayName=Sample User, name=Sample User, longTermAuthenticationRequestTokenUsed=false, memberOf=[sampleUsers], objectCategory=FixedAttribute} | roles: [MyRole] | permissions: [mypermission] | isRemembered: false |]
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | authorizers: null
2017-02-15T15:49:11.093+0000|Info: 2017-02-15 15:49:11,087 DEBUG [Process 65316@MYHOST:19] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | authenticated and authorized -> grant access
When I add the server timeout lines, I see the following log lines instead:
2017-02-15T15:54:26.322+0000|Info: 2017-02-15 15:54:26,321 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.mgt.DefaultSecurityManager | Context already contains a session. Returning.
2017-02-15T15:54:26.323+0000|Info: 2017-02-15 15:54:26,321 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.subject.support.DefaultSubjectContext | No SecurityManager available in subject context map. Falling back to SecurityUtils.getSecurityManager() lookup.
2017-02-15T15:54:26.323+0000|Info: 2017-02-15 15:54:26,322 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.web.servlet.SimpleCookie | Added HttpServletResponse Cookie [rememberMe=deleteMe; Path=/MyApplication; Max-Age=0; Expires=Tue, 14-Feb-2017 15:54:26 GMT]
2017-02-15T15:54:26.325+0000|Info: 2017-02-15 15:54:26,322 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.mgt.AbstractRememberMeManager | AuthenticationToken did not indicate RememberMe is requested. RememberMe functionality will not be executed for corresponding account.
2017-02-15T15:54:26.325+0000|Info: 2017-02-15 15:54:26,323 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultCallbackLogic | redirectUrl: https://myhost:8181/MyApplication/
2017-02-15T15:54:26.367+0000|Info: 2017-02-15 15:54:26,366 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.web.servlet.SimpleCookie | Found 'JSESSIONID' cookie value [27b5db39919ebd515a08717b325b]
2017-02-15T15:54:26.382+0000|Info: 2017-02-15 15:54:26,367 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.mgt.DefaultSecurityManager | Resolved SubjectContext context session is invalid. Ignoring and creating an anonymous (session-less) Subject instance.
org.apache.shiro.session.UnknownSessionException: There is no session with id [27b5db39919ebd515a08717b325b]
at org.apache.shiro.session.mgt.eis.AbstractSessionDAO.readSession(AbstractSessionDAO.java:170)
at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSessionFromDataSource(DefaultSessionManager.java:236)
at org.apache.shiro.session.mgt.DefaultSessionManager.retrieveSession(DefaultSessionManager.java:222)
at org.apache.shiro.session.mgt.AbstractValidatingSessionManager.doGetSession(AbstractValidatingSessionManager.java:118)
at org.apache.shiro.session.mgt.AbstractNativeSessionManager.lookupSession(AbstractNativeSessionManager.java:148)
at org.apache.shiro.session.mgt.AbstractNativeSessionManager.getSession(AbstractNativeSessionManager.java:140)
at org.apache.shiro.mgt.SessionsSecurityManager.getSession(SessionsSecurityManager.java:156)
at org.apache.shiro.mgt.DefaultSecurityManager.resolveContextSession(DefaultSecurityManager.java:460)
at org.apache.shiro.mgt.DefaultSecurityManager.resolveSession(DefaultSecurityManager.java:446)
at org.apache.shiro.mgt.DefaultSecurityManager.createSubject(DefaultSecurityManager.java:342)
at org.apache.shiro.subject.Subject$Builder.buildSubject(Subject.java:845)
at org.apache.shiro.web.subject.WebSubject$Builder.buildWebSubject(WebSubject.java:148)
at org.apache.shiro.web.servlet.AbstractShiroFilter.createSubject(AbstractShiroFilter.java:292)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:359)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:147)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:413)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571)
at java.lang.Thread.run(Thread.java:745)
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,374 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | === SECURITY ===
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | url: https://myhost:8181/MyApplication/
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | matchers: null
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | clients: CasClient
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | currentClients: [#CasClient# | callbackUrl: callback?client_name=CasClient | configuration: #CasConfiguration# | loginUrl: https://myhost:8181/cas | prefixUrl: https://myhost:8181/cas | protocol: CAS30 | renew: false | gateway: false | encoding: UTF-8 | logoutHandler: org.pac4j.cas.logout.CasSingleSignOutHandler@7ced089b | acceptAnyProxy: false | allowedProxyChains: [] | proxyReceptor: null | timeTolerance: 1000 | |]
2017-02-15T15:54:26.389+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | loadProfilesFromSession: true
2017-02-15T15:54:26.390+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | profiles: []
2017-02-15T15:54:26.390+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | Starting authentication
2017-02-15T15:54:26.390+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.core.engine.DefaultSecurityLogic | requestedUrl: https://myhost:8181/MyApplication/
2017-02-15T15:54:26.398+0000|Info: 2017-02-15 15:54:26,389 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.session.mgt.DefaultSessionManager | Creating new EIS record for new session instance [org.apache.shiro.session.mgt.SimpleSession,id=null]
2017-02-15T15:54:26.398+0000|Info: 2017-02-15 15:54:26,398 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.apache.shiro.web.servlet.SimpleCookie | Added HttpServletResponse Cookie [JSESSIONID=b2ad10cb-56a9-40e4-8624-0f0f827452d5; Path=/MyApplication; HttpOnly]
2017-02-15T15:54:26.400+0000|Info: 2017-02-15 15:54:26,399 DEBUG [Process 67156@MYHOST:44] --- | --- | --- | org.pac4j.cas.client.CasClient | redirectionUrl: https://myhost:8181/cas?service=https%3A%2F%2Fmyhost%3A8181%2FMyApplication%2Fcallback%3Fclient_name%3DCasClient
And then it begins a loop of repeatedly obtaining a Service Ticket and then validating the service ticket with the same results as shown above.
As I said, I am working through trying to reduce my shiro configuration to match that of the sample project but if anything here jumps out at you, please let me know.
Thanks,
Jonathan Labin