【问题标题】:Orbeon make Authorization header optionalOrbeon 使 Authorization 标头可选
【发布时间】:2021-02-21 08:11:19
【问题描述】:

我有一个嵌入式 orbeon 实例,位于具有 JWT 安全性的 spring 网关后面。这很好用,对于 orbeon 构建器,我需要转发 Authorization 标头以使事情正常工作。 但是对于表单运行器,现在我有一个要求:对于某些表单需要身份验证,而对于其他一些则不需要。 可以通过以下方式配置 Orbeon:如果 Authorization 标头存在,则转发它,如果不存在,则不执行任何操作(只需加载表单并让它填写)?

这是我的 properties-local-prod.xml 中的标头转发设置

  <property
        as="xs:string"
        name="oxf.http.forward-headers"
        value="Authorization"/>
  <property
        as="xs:string"
        name="oxf.xforms.forward-submission-headers"
        value="Authorization token allowDraft"/>
  <property
        as="xs:string"
        name="oxf.fr.authentication.method"
        value="header"/>

现在我得到了默认的 Orbeon 未经授权的页面。

当我试图在没有身份验证的情况下打开嵌入式 from-runner 时,我得到了 401(显然没有任何东西可以发送到 orbeon)。我在 orbeon 日志中找到了这个:

  HTTP status code 401 {controller: "oxf:/apps/fr/page-flow.xml", method: "GET", path: 
 "/fr/app/form/edit/myforminstanceid", status-code: "401"}

一个可能的解决方案是,如果可以定义某种可以根据表单定义应用的运行上下文,例如 prod-auth、prod-public(不幸的是,这些应该是并行激活的,因为我们只有一个 Orbeon实例)。 (进一步考虑已经可用的run modes,例如对于同一组表单,我应该能够定义保存草稿对经过身份验证的用户可见,但对匿名用户不可见......虽然我已经解决了这个问题一些不太好的 JavaScript 魔法。)

【问题讨论】:

    标签: orbeon


    【解决方案1】:

    Orbeon 本身不会做任何事情,当您将类似的配置放入 properties-prod.xml 时,只是转发给定的标头。

    尽管默认的 Orbeon Forms 日志记录可能会更好(关于进一步的 HTTP 调用以了解后台发生的情况),但日志中有一行在请求到达时它做了什么。事实证明,我的自定义后端(持久层)需要 Authorization 标头。

    我必须在我的 spring 安全配置中添加一个 (/contextRoot/orbeon).permitAll() 并开始工作。

    【讨论】:

    • 我不会假装完全理解您的解决方案;),但我很高兴它正在工作! ——亚历克斯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2021-01-17
    • 2021-09-26
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多