【发布时间】: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