[keycloak-user] where does the tomcat client adapter save the session

Marek Posolda mposolda at redhat.com
Wed Jul 19 03:42:05 EDT 2017


On 19/07/17 07:07, Yizhou Jiang(Yizhou) wrote:
> Hi,
>        I have two questions:
>
>
> 1      Where does the tomcat client  adapter store  the user  session ?
>
>
>        when a user logged into a application procted by a tomcat client adapter . there is only  “JSESSIONID=E1EAC81E52C97DD64FFB4C13A1231996” in the cookie。
> But when I restart the tomcat , the user use the  cookie still can login into the application.  obviously , the session isn’t store in the memory of tomcat , Where does the tomcat client adapter store the  user session?
It's saved in the HTTP Session and AFAIK HTTP sessions are not persisted 
by Tomcat and are cleared after restart.

But I guess that when you restarted Tomcat, you didnn't restarted the 
Keycloak server, right? So you still have SSO cookie KEYCLOAK_IDENTITY 
on keycloak server. So what happens for you is that after restart of 
Tomcat and open the URL of your Tomcat application, user is redirected 
to Keycloak, here he is automatically authenticated due to SSO and hence 
in Tomcat is automatically authenticated too.

>
> 2     Is there any settings about policy enforcer that can  make unauthenticated  user  access some resources in a application protected by a tomcat client adapter?
>
> Set the enforcement-mode  with value “DISABLED” still require the user be authenticated.
>
>    "policy-enforcer": {
>          "enforcement-mode": "PERMISSIVE",
>          "paths": [
>              {
>                  "path": "/public/*",
>                  "enforcement-mode": "DISABLED"
>              }
>          ]
>      }
Yes, true. There are security constraints declared in web.xml of your 
web application. And adapter always require user to be authenticated 
(and redirects to login screen) once user enters some "secured" URL from 
there. So you may need to rather change your security constraints in 
web.xml to ensure some URL is public.

Also I am not sure at 100%, but I think that those "public" URLs 
declared in web.xml will be just ignored by Keycloak adapter at all. 
Which means that declared "policy-enforcer" will be ignored too. In 
other words, the "policy-enforcer" is applied just for authenticated 
requests and it's done after user was authenticated (again not sure at 
100%, but rather something like 95% :)

Marek
>
>
>
> thanks ,
> yizhou
>
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user




More information about the keycloak-user mailing list