【问题标题】:Sending a HTTP POST request发送 HTTP POST 请求
【发布时间】:2009-07-04 02:02:55
【问题描述】:

为了实现单点注销,我希望用户在用户单击应用程序 A 上的注销时另外注销应用程序 B。是否可以使用对应用程序 B 的某种形式的 POST 请求来实现这一点?即当用户点击注销时:

  1. 生成现有的 POST 请求以注销应用程序 A
  2. 生成额外的 POST 请求以注销应用程序 B。

【问题讨论】:

  • 你需要更清楚。 IE。您正在使用哪种语言进行编程。

标签: java http post jakarta-ee request


【解决方案1】:

最简单的方法是检查您的 SSO 提供商是否具有单点注销功能。

对此进行编码和部署会使您的整体 IT 解决方案有点脆弱。

另一个建议是与您的(企业)架构师一起讨论这个问题,因为 SSO 通常是一项企业计划,并在这篇文章中指出她(非常有说服力)的论点:http://lists.danga.com/pipermail/yadis/2005-July/001085.html

【讨论】:

    【解决方案2】:

    是的,具体如何操作取决于您使用的编程语言。

    例如,在 ASP.Net 下,您将在处理应用程序 A 的注销事件中使用 System.Net.HttpWebRequest 向应用程序 B 发出注销请求

    如果您可以发布您正在使用的语言,我可以举一个合适的例子

    【讨论】:

    • 它是一个 J2EE 应用程序。 Java语言
    • 通常是我不熟悉或不熟悉的语言,必须由其他人提供示例
    【解决方案3】:

    根据您的身份验证系统的实现,您可能可以/需要使用 JavaScript 而不是从服务器端发送 POST。

    【讨论】:

      【解决方案4】:

      没有具体信息,很难给出具体答案,但当你提到 POST 时,我会假设涉及到浏览器。

      POST(不使用 Javascript 或类似内容)在提交表单时发生。由于表单只能有一个动作,它只能针对一个服务器端页面。

      一种解决方案是在收到一个操作后简单地将应用程序 A 转发注销凭据到应用程序 B,这样就有更多机会检查返回。

      但是,如果您设置为 POST 到不同的页面,请参阅本教程了解与 iframe 相关的 hack - http://www.codeproject.com/KB/scripting/multiact.aspx

      【讨论】:

      • 应用A向应用B转发请求时,会不会显示应用B的注销页面?这意味着当用户在应用程序 A 上单击注销时,我们会向他显示应用程序 B 的注销页面。
      • 不,您仅在后端执行此操作,并且仅将原始注销页面发送给用户。应用程序 A 实际上将充当与应用程序 B 交互的用户(并且不返回任何内容,假设成功 - 或者如果应用程序失败则返回“错误注销”)。
      • 我尝试了 URLConnection 但收效甚微。 Ajax 被排除在外,因为它是跨域的。
      • 您需要cookies或类似的东西吗?如果是这样,HTTPClient 可能会提供任何缺少的东西。 innovation.ch/java/HTTPClient/urlcon_vs_httpclient.html
      【解决方案5】:

      如果您的登录会话由 cookie 存储,并且您无需提供任何其他内容即可退出应用程序 B,则在 javascript 中清除 cookie 通常会破坏会话并注销用户。

      【讨论】:

        【解决方案6】:

        如何使它成为基于 cookie 的身份验证?相同的 cookie 为各种应用程序(在您的情况下为 2 个不同的应用程序)验证用户身份。一旦用户从一个应用程序(应用程序 A)注销,则使 cookie 无效(按到期日期),以便每当用户发送 POST 请求时休息应用程序(应用程序 B)的请求未处理。每个应用程序都需要一个跟踪每个 POST 请求以验证 cookie 的 Servlet。

        【讨论】:

        • 解决了这个问题 - 引入了一个令牌(会话创建时间)并将这个令牌缓存在应用程序中。如果请求来自后退按钮,则会引入检查以查看此令牌是否已在应用程序中缓存/存档。如果令牌被归档,用户将被重定向到会话超时页面。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-14
        • 1970-01-01
        相关资源
        最近更新 更多