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