我们使用Shibboleth对用户进行身份验证。它很棒。
问题是,在进入用户/注销(并且我认为实际注销)之后,用户会立即自动重新进行身份验证!
任何解决方案都会浮现在脑海中?
谢谢!
答案 0 :(得分:3)
这是一个中等复杂的问题,取决于您想要实现的目标。坏消息是according to people who should know, SingleLogOff basically doesn't work,因为至少本地应用程序可能会缓存登录信息,并且没有可靠的方法告诉每个人将您注销。
但是,退出服务提供商的特定会话可能就像发送用户一样简单
https://yourhost/Shibboleth.sso/Logout?return=http://www.google.com
将破坏该会话并将用户重定向到给定的URL。
要使用IdP销毁会话,您可能需要一种方法来擦除IdP设置的_idp_session
cookie,如果您控制IdP则很容易,如果您不控制IdP则很容易。 (shibd SP确实支持告诉IdP注销IdP会话,但IdP没有。)
在SHIB 3发布后编辑
Shibboleth 3现在支持 SLO 。
答案 1 :(得分:1)
单次注销不起作用 - 不要费心寻找它;您可以从SP注销 - 但是没有真正的方法可以从IdP的SSO链注销。
Shibboleth IdP是一个SSO,它缓存一个cookie,覆盖SP上的任何注销(唯一的方法是强制用户在SP注销后在SP上进行身份验证 - SAML配置 - 这实际上意味着SP不再接受SSO)。
杀死IdP cookie只会阻止未来的SSO - 它不会从任何预先存在的会话中注销用户。
真正注销SSO世界的唯一方法是终止浏览器会话(每种浏览器类型都有不同的方式)。
有所谓的SLO代理 - 试图在SSO sesson中访问每个访问过的SP,单独注销,然后终止IdP会话:这在SSO环境中根本不可行多个SP(只需1次调用一个SP即可失败,并且您有一个未完成的注销过程)。
答案 2 :(得分:0)
@ user353829在SSO世界中真正注销的唯一方法是终止浏览器会话
好的......那是部分正确的。 一般来说,SAML2(Shibboleth实现)提供了单点注销(page 32)的规范。问题是,实施起来相当棘手(阅读@Ulrich Schwarz提供的SLOIssues),更糟糕的是培训用户正确理解全局注销(再次仔细阅读SLOIssues)。
但是如果你完全确定你了解SLO是如何运作的,那么匈牙利队就会working implementation创建。
我正在测试它,我已成功将其与我的Facebook Login Module集成。而且效果很好。
请记住,有一个原因可以解释为什么这个匈牙利模块不会出现在最新的官方Shibboleth版本中。
希望有所帮助