要实现单点注销,我希望用户在用户单击应用程序A上的注销时另外注销应用程序B.是否可以使用某种形式的应用程序B的POST请求来实现此功能?即当用户点击退出时:
答案 0 :(得分:1)
最简单的方法是检查您的SSO提供商是否具有单点注销功能。
对其进行编码并进行部署会使您的整体IT解决方案变得有点脆弱。
另一个建议是与你的(企业)架构师讨论这个问题,因为SSO通常是一个企业倡议,并在这篇文章中指出她(非常有说服力)的论点:http://lists.danga.com/pipermail/yadis/2005-July/001085.html
答案 1 :(得分:0)
是的,你如何做到这取决于你正在使用的编程语言。
例如,在ASP.Net下,您在处理应用程序A的Logout事件时使用System.Net.HttpWebRequest来向应用程序B发出注销请求
如果您可以发布您正在使用的语言,我可以提供一个正确的例子
答案 2 :(得分:0)
根据您的身份验证系统的实现,您可能/需要使用JavaScript而不是服务器端发送POST。
答案 3 :(得分:0)
如果没有具体的信息,很难给出具体的答案,但是当你提到POST时,我会假设涉及浏览器。
提交表单时会发生POST(不使用Javascript或类似内容)。由于表单只能有一个操作,因此它只能定位一个服务器端页面。
一种解决方案是,只要收到一个操作,就可以向应用程序B提供应用程序A前向注销凭据,这样可以有更多机会检查退货。
但是,如果您将POST设置为不同的网页,请参阅本教程,了解与iframe相关的一个黑客 - http://www.codeproject.com/KB/scripting/multiact.aspx
答案 4 :(得分:0)
如果您的登录会话是由cookie存储的,并且您无需提供任何其他内容来退出应用程序B,那么在javascript中清除cookie通常会破坏会话并签署用户。
答案 5 :(得分:0)
如何使其成为基于cookie的身份验证?同一个cookie为各种应用程序(在您的情况下为2个不同的应用程序)验证用户。一旦用户从一个应用程序(应用程序A)注销,使cookie无效(到期日期),以便每当用户发送POST请求休息时应用程序(应用程序B)的请求未被处理。每个应用程序都需要一个跟踪每个POST请求以验证cookie的Servlet。