<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Anthony,<div class=""><br class=""></div><div class="">Thanks for the very descriptive bug report. I’ll have a look at fixing this shortly.&nbsp;</div><div class=""><br class=""><div class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Scott Rossillo</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">Smartling | Senior Software Engineer</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:srossillo@smartling.com" class="">srossillo@smartling.com</a></div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
</div>
</div></div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 21, 2016, at 7:26 PM, Anthony Fryer &lt;<a href="mailto:Anthony.Fryer@virginaustralia.com" class="">Anthony.Fryer@virginaustralia.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I’ve noticed some issues when testing single logout with the spring security adapter.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I setup the admin url for the test application that used the spring security adapter in keycloak and tested logging out from keycloak and it didn’t invalidate the session.&nbsp; This is consistent with what I saw in other environments while testing.&nbsp; I did some digging and found that the spring adapter isn’t working correctly for single log out in my environments.&nbsp; We’re not using spring boot so not sure if that might be a reason why its not working out of the box.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The issue is with the org.keycloak.adapters.springsecurity.management.HtttpSessionManager class.&nbsp; This implements javax.servlet.http.HttpSessionListener to receive events when sessions are created and stores the sessions in a hash map.&nbsp; When you do a logout from keycloak, it sends a POST request to &lt;admin_url&gt;/k_logout.&nbsp; This results in a call to the HttpSessionManager.logoutHttpSessions method with the session id passed in as an argument.&nbsp; This method attempts to lookup the session in the hashmap and call the invalidate() method.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The problem is by default the HttpSessionManager class isn’t receiving the session create events.&nbsp; You need to configure it as a listener in web.xml to enable that.&nbsp; But even if you do that it still doesn’t work because the servlet container will create a instance of the class, but spring will also create another instance when creating the keycloak beans and this new instance is the one passed into the KeycloakPreAuthActionsFilter constructor.&nbsp; So the instance that is created by the servlet container is the one receiving the session create event and the one used by spring isn’t receiving any events but is the one used to do the logoutHttpSessions() call.&nbsp; The spring instance has no sessions in the hashmap, so logoutHttpSessions() does nothing.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The fix is to make a new version of HttpSessionManager that implements org.keycloak.adapters.spi.UserSessionManagement<span class="Apple-converted-space">&nbsp;</span><i class="">and</i>org.springframework.context.ApplicationListener&lt;ApplicationEvent&gt;, which is a spring interface that receives session create/destroy events.&nbsp; In web.xml you need to register org.springframework.security.web.session.HttpSessionEventPublisher as a listener so spring will receive those events from the servlet container.&nbsp; Then in the spring config, you need the KeycloakPreAuthActionsFilter to be initialized with the new HttpSessionManager instead of the default one.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The HttpSessionManager class that works for me is below…<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: none;"><tbody class=""><tr class=""><td width="638" valign="top" style="width: 478.8pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">package</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>my.keycloak;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>java.util.List;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>javax.servlet.http.HttpSession;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.keycloak.adapters.spi.UserSessionManagement;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.keycloak.adapters.springsecurity.management.LocalSessionManagementStrategy;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.keycloak.adapters.springsecurity.management.SessionManagementStrategy;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.slf4j.Logger;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.slf4j.LoggerFactory;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.springframework.context.ApplicationEvent;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.springframework.context.ApplicationListener;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.springframework.security.web.session.HttpSessionCreatedEvent;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">import</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>org.springframework.security.web.session.HttpSessionDestroyedEvent;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">class</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>HttpSessionManager<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">implements</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>UserSessionManagement, ApplicationListener&lt;ApplicationEvent&gt; {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">private</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">static</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">final</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>Logger<span class="Apple-converted-space">&nbsp;</span></span><b class=""><i class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">log</span></i></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>= LoggerFactory.<i class="">getLogger</i>(HttpSessionManager.</span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">class</span></b><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">private</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>SessionManagementStrategy<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>=<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>LocalSessionManagementStrategy();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@<span style="background-color: silver; background-position: initial initial; background-repeat: initial initial;" class="">Override</span></span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">void</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>logoutAll() {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><i class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class=""><a href="http://log.info/" style="color: purple; text-decoration: underline;" class="">log</a></span></i></b><span style="font-size: 8pt; font-family: Consolas;" class=""><a href="http://log.info/" style="color: purple; text-decoration: underline;" class="">.info</a>(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"Received request to log out all users."</span><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">for</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>(HttpSession<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>:<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getAll()) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">.invalidate();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.clear();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@<span style="background-color: silver; background-position: initial initial; background-repeat: initial initial;" class="">Override</span></span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">void</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>logoutHttpSessions(List&lt;String&gt;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">ids</span><span style="font-size: 8pt; font-family: Consolas;" class="">) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><i class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class=""><a href="http://log.info/" style="color: purple; text-decoration: underline;" class="">log</a></span></i></b><span style="font-size: 8pt; font-family: Consolas;" class=""><a href="http://log.info/" style="color: purple; text-decoration: underline;" class="">.info</a>(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"Received request to log out {} session(s): {}"</span><span style="font-size: 8pt; font-family: Consolas;" class="">,<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">ids</span><span style="font-size: 8pt; font-family: Consolas;" class="">.size(),<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">ids</span><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">for</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>(String<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">id</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>:<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">ids</span><span style="font-size: 8pt; font-family: Consolas;" class="">) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>=<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.remove(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">id</span><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">if</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>!=<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">null</span></b><span style="font-size: 8pt; font-family: Consolas;" class="">) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">.invalidate();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.clear();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@<span style="background-color: silver; background-position: initial initial; background-repeat: initial initial;" class="">Override</span></span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">void</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>onApplicationEvent(ApplicationEvent<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">event</span><span style="font-size: 8pt; font-family: Consolas;" class="">) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">if</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">event</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">instanceof</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>HttpSessionCreatedEvent) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSessionCreatedEvent<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">e</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>= (HttpSessionCreatedEvent)</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">event</span><span style="font-size: 8pt; font-family: Consolas;" class="">;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>=<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">e</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getSession();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><i class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">log</span></i></b><span style="font-size: 8pt; font-family: Consolas;" class="">.debug(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"Session created: {}"</span><span style="font-size: 8pt; font-family: Consolas;" class="">,<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getId());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.store(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">else</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">if</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">event</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">instanceof</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>HttpSessionDestroyedEvent) {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSessionDestroyedEvent<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">e</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>= (HttpSessionDestroyedEvent)</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">event</span><span style="font-size: 8pt; font-family: Consolas;" class="">;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>=<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">e</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getSession();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">sessions</span><span style="font-size: 8pt; font-family: Consolas;" class="">.remove(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getId());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><i class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(0, 0, 192);" class="">log</span></i></b><span style="font-size: 8pt; font-family: Consolas;" class="">.debug(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"Session destroyed: {}"</span><span style="font-size: 8pt; font-family: Consolas;" class="">,<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">session</span><span style="font-size: 8pt; font-family: Consolas;" class="">.getId());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">}</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt;" class=""><o:p class="">&nbsp;</o:p></span></div></td></tr></tbody></table><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">The keycloak config changes are below…<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: none;"><tbody class=""><tr class=""><td width="638" valign="top" style="width: 478.8pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@Configuration</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@EnableWebSecurity</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@ComponentScan</span><span style="font-size: 8pt; font-family: Consolas;" class="">(basePackageClasses = KeycloakSecurityComponents.</span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">class</span></b><span style="font-size: 8pt; font-family: Consolas;" class="">)</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">class</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>WebSecurityConfig<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">extends</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>KeycloakWebSecurityConfigurerAdapter {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@Autowired</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">&nbsp;&nbsp;&nbsp; public</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">void</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>configureGlobal(AuthenticationManagerBuilder<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">auth</span><span style="font-size: 8pt; font-family: Consolas;" class="">)<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">throws</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>Exception {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">auth</span><span style="font-size: 8pt; font-family: Consolas;" class="">.authenticationProvider(keycloakAuthenticationProvider());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">&nbsp;&nbsp;&nbsp; @Override</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">&nbsp;&nbsp;&nbsp; protected</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>SessionAuthenticationStrategy sessionAuthenticationStrategy() {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">return</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>RegisterSessionAuthenticationStrategy(</span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>SessionRegistryImpl());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">&nbsp;&nbsp;&nbsp; @Bean</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">protected</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>KeycloakPreAuthActionsFilter keycloakPreAuthActionsFilter() {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">return</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>KeycloakPreAuthActionsFilter(<span style="background-color: silver; background-position: initial initial; background-repeat: initial initial;" class="">springHttpSessionManager</span>());</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">&nbsp;&nbsp;&nbsp; @Bean</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">protected</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>my.keycloak.HttpSessionManager<span class="Apple-converted-space">&nbsp;</span><span style="background-color: silver; background-position: initial initial; background-repeat: initial initial;" class="">springHttpSessionManager</span>() {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">return</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>my.keycloak.HttpSessionManager();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(100, 100, 100);" class="">@Override</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">&nbsp;&nbsp;&nbsp; protected</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">void</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>configure(HttpSecurity<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">http</span><span style="font-size: 8pt; font-family: Consolas;" class="">)<span class="Apple-converted-space">&nbsp;</span></span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">throws</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>Exception {</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; super</span></b><span style="font-size: 8pt; font-family: Consolas;" class="">.configure(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">http</span><span style="font-size: 8pt; font-family: Consolas;" class="">);</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class="">&nbsp;</o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(106, 62, 62);" class="">http</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .logout()</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .logoutRequestMatcher(</span><b class=""><span style="font-size: 8pt; font-family: Consolas; color: rgb(127, 0, 85);" class="">new</span></b><span style="font-size: 8pt; font-family: Consolas;" class=""><span class="Apple-converted-space">&nbsp;</span>AntPathRequestMatcher(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"/sso/logout"</span><span style="font-size: 8pt; font-family: Consolas;" class="">))</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .and()</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .authorizeRequests()</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .antMatchers(</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(42, 0, 255);" class="">"/user*"</span><span style="font-size: 8pt; font-family: Consolas;" class="">).authenticated()</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .anyRequest().permitAll();</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp; }</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">}</span><span style="font-size: 8pt;" class=""><o:p class=""></o:p></span></div></td></tr></tbody></table><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">and web.xml needs this added to it…<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><table class="MsoTableGrid" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: none;"><tbody class=""><tr class=""><td width="638" valign="top" style="width: 478.8pt; border: 1pt solid windowtext; padding: 0cm 5.4pt;" class=""><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&lt;</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(63, 127, 127);" class="">listener</span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&gt;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;&nbsp;&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&lt;</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(63, 127, 127);" class="">listener-class</span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&gt;</span><span style="font-size: 8pt; font-family: Consolas;" class="">org.springframework.security.web.session.HttpSessionEventPublisher</span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&lt;/</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(63, 127, 127);" class="">listener-class</span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&gt;</span><span style="font-size: 8pt; font-family: Consolas;" class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 8pt; font-family: Consolas;" class="">&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&lt;/</span><span style="font-size: 8pt; font-family: Consolas; color: rgb(63, 127, 127);" class="">listener</span><span style="font-size: 8pt; font-family: Consolas; color: teal;" class="">&gt;</span><span style="font-size: 8pt;" class=""><o:p class=""></o:p></span></div></td></tr></tbody></table><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">After making the above changes, log out from the keycloak admin console works as expected.<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Regards,<o:p class=""></o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Anthony Fryer<span class=""><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class="">&nbsp;</o:p></div></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">The content of this e-mail, including any attachments, is a confidential communication between Virgin Australia Airlines Pty Ltd (Virgin Australia) or its related entities (or the sender if this email is a private communication) and the intended addressee and is for the sole use of that intended addressee. If you are not the intended addressee, any use, interference with, disclosure or copying of this material is unauthorized and prohibited. If you have received this e-mail in error please contact the sender immediately and then delete the message and any attachment(s). There is no warranty that this email is error, virus or defect free. This email is also subject to copyright. No part of it should be reproduced, adapted or communicated without the written consent of the copyright owner. If this is a private communication it does not represent the views of Virgin Australia or its related entities. Please be aware that the contents of any emails sent to or from Virgin Australia or its related entities may be periodically monitored and reviewed. Virgin Australia and its related entities respect your privacy. Our privacy policy can be accessed from our website:<span class="Apple-converted-space">&nbsp;</span></span><a href="http://www.virginaustralia.com/" style="color: purple; text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">www.virginaustralia.com</a><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">keycloak-user mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:keycloak-user@lists.jboss.org" style="color: purple; text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">keycloak-user@lists.jboss.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" style="color: purple; text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.jboss.org/mailman/listinfo/keycloak-user</a></div></blockquote></div><br class=""></div></body></html>