Agree with @mmoayyed's outline with one tweak: LogoutableService needs a less awkward name. How about SingleLogoutService or SLOService?