Jasig/cas — pull request #264 by leleuj (2013-05-30 08:45:03+00:00)
Title: CAS-1292: Front Channel SLO

This is the second and last pull request regarding front SLO.

The missing ```LogoutManagerImpl``` test class has been added in this pull request.

The recommendation made by @battags has been followed and a ```LogoutRequest``` class has been created to offer a higher level of abstraction.

The changes in webflow are greatly inspired by https://github.com/serac/cas/commit/7855e2293a8a14cf85bec6283fae1cb560e9156f. So the ```CasDefaultFlowUrlHandler``` has been updated that way (with a small bug fix) and the ```SelectiveFlowHandlerAdapter``` has been created "as is".

Nonetheless, the new ```logout-webflow.xml``` file is quite different : I found it "too verbose" (too many states to implement the algorithm in details). I prefered to keep most of the algorithm's details in the ```LogoutAction``` class (which replaces the ```LogoutController``` class) and in the ```FrontLogoutAction``` class to have a better balance between Java code and webflow XML. This way, the logout webflow XML file implements the global (back + front) SLO at a higher level, easier to read and understand.

In addition to the unit test classes, I have made a global real test : authentication on three services (1 back + 2 front) and call to the logout.
1) Call the logout url : /cas/logout -> the back logout is performed and a redirection to the first front app happens : /front1?SAMLRequest=xxx&RelayState=yyy
2) Typing by hand the logout url to resume the SLO : /cas/logout?_eventId=next&RelayState=yyy -> I'm redirected to the second front app : /front2?SAMLRequest=zzz&RelayState=ttt
3) Typing again the logout url to resume SLO : /cas/logout?_eventId=next&RelayState=ttt -> the logout page is finally displayed.