【问题标题】:Logout from orbeon via REST通过 REST 从 orbeon 注销
【发布时间】:2016-01-25 08:49:01
【问题描述】:

我在我的 orbeon 应用程序中打开了安全身份验证,现在我通过 rest api 远程登录到应用程序(我在 url https://localhost:8444/orbeon/j_security_check 上发送 post 请求)。 现在我想从我的应用程序中注销,但我不知道将请求发送到哪里。 单击注销按钮后,我会检查发生了什么(发出了什么 http 请求),但 orbeon 中没有注销按钮。 我在文档中找到的只是:

<p:processor name="oxf:session-invalidator"/>

但我不知道如何使用它。 请帮忙

【问题讨论】:

    标签: rest https orbeon


    【解决方案1】:

    既然你提到了j_security_check,我想你已经在 Orbeon Forms 的web.xml 中设置了基于 FORM 的身份验证。请注意,您处于纯粹的“servlet 领域”; Orbeon Forms Web 应用程序所特有的内容并不多。由于您使用的是基于 FORM 的身份验证,因此服务器会在您登录后知道您是谁,因为浏览器会在您登录时发送 JSESSIONID Tomcat cookie 集。要注销,您想告诉 Tomcat“使该会话无效”。这样做:

    • 最简单的方法是write a JSP that calls session.invalidate()
    • 如果您已经在 Orbeon Forms 中使用 XPL,则可以编写一个调用 &lt;p:processor name="oxf:session-invalidator"/&gt; 的 XPL 文件,并通过页面流将该 XPL 挂钩到 URL。

    【讨论】:

    • 我使用的是wildfly而不是tomcat。当我使用 session.invalidate() 时,它只是让我退出我的应用程序(orbeon 在 iframe 中附加到我的应用程序),而不是退出 orbeon 应用程序。如何使用第二个选项?我应该在哪里添加这段代码: ?我可以找到一些文档吗?
    • @piechos 因此,您的应用似乎与 Orbeon Forms 一起部署;您是使用单独部署还是使用 Form Runner API 嵌入表单? (如果该选项适合您,建议使用后者。)
    • 我有单独的部署。我将我的应用程序放在一个war 文件中,而将orbeon 放在另一个war 文件中。此外,我在我的应用程序的某些地方使用了 orbeon 嵌入式 API。但我只想注销。我可以使用任何 REST API 吗?问题是当我分别从我的应用程序登录和注销时,我想从 orbeon 登录和注销。
    • @piechos 我认为这与我们在stackoverflow.com/questions/35012728/… 上讨论的内容非常相关。如那里所述:您不需要登录/orbeon。如果您不这样做,则无需注销;)。显然,您会希望以某种方式保护/orbeon,并使其对用户完全无法访问,例如通过过滤器、防火墙或反向代理中的设置(如果有的话)。
    • 我必须登录 /orbeon 因为我也将 orbeon 用作单独的战争。在您提到的顶部,我正在使用 orbeon 嵌入式 api,但在本主题中,我对 orbeon 有问题,我将其用作单独的战争,我只是在我的应用程序中使用简单的 iframe,其中我有 /orbeon
    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2010-12-26
    • 2017-02-23
    相关资源
    最近更新 更多