Bug 1322414

Summary: (6.4.z) Single Logout does not fully work on distributed PicketLink Identity Provider
Product: [JBoss] JBoss Enterprise Application Platform 6 Reporter: Ondrej Kotek <okotek>
Component: PicketLinkAssignee: jboss-set
Status: CLOSED EOL QA Contact: Ondrej Kotek <okotek>
Severity: urgent Docs Contact:
Priority: unspecified    
Version: 6.4.6CC: anmiller, bdawidow, bmaxwell, fgavrilo, psilva, pskopek
Target Milestone: CR1Keywords: Reopened
Target Release: EAP 6.4.17   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-08-19 12:46:27 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1450092, 1455294    

Description Ondrej Kotek 2016-03-30 13:12:32 UTC
Description of problem:
Single Logout (Global Logout, GLO) does not fully work on distributable PicketLink IdP under certain circumstances – in case user uses (or is forced to use) different nodes with IdP for logging in and/or logging out to/from SPs (e.g. no sticky sessions, or a node failure), user can remain logged in at several service providers.

The issue may cause instability to a PL deployment where IdPs are distributed across different nodes/instances.

SAML2LogOutHandler uses IdentityServer structure stored in ServletContext – IdentityServer is not replicated/shared between instances. Thus, the list of participants is limited to the IdP where the logout was sent to.


Version-Release number of selected component (if applicable):
2.5.4.SP7-redhat-1


How reproducible:
Given:
* EAP instance EAP0 with PicketLink SPs: SP1, SP2
* EAP instance EAP1 with distributable PicketLink IdP
* EAP instance EAP2 with distributable PicketLink IdP
* no load balancer to simplify the test case
  * SP1 targets IdP @ EAP1 (set in picketlink.xml config)
  * SP2 targets IdP @ EAP2 (set in picketlink.xml config)

Procedure:
When user requests SP1, then user should be redirected to IdP @ EAP1, and IdP shoud prompt user to log in. [OK]
When user logs in to IdP @ EAP1, then IdP should redirect user back to SP1, and SP1 should return index page (user should be logged in to SP1). [OK]
When user requests SP2, then user should be redirected to IdP @ EAP2, and then user should be redirected back to SP2, and SP2 should return index page (user should be logged in to SP2). [OK]
When user user requests Global Logout on SP1, then user should be logged out from SP1, SP2, and IdP. [FAILURE]


Actual results:
User is logged out from SP1 and IdP (@ both EAP1 and EAP2), but not from SP2 -- GLO workflow miss SP2.


Expected results:
User should be logged out from SP1, SP2, and IdP.

Comment 3 Ivo Hradek 2017-08-15 15:32:09 UTC
Verification failed with EAP-6.4.17-CP.CR4;

Comment 7 Petr Penicka 2017-09-06 13:35:48 UTC
Released on 2017-09-05 as part of the EAP 6.4.17 release.