Orbeon 使授权 header 可选
Orbeon make Authorization header optional
我有一个嵌入式 orbeon 实例,位于具有 JWT 安全性的 spring 网关后面。这很有效,对于 orbeon 构建器,我需要转发授权 header 才能使事情正常进行。
但是对于 form-runner,现在我有一个要求:对于某些表单,需要身份验证,对于其他一些则不需要。
可以通过以下方式配置 Orbeon:如果授权 header 存在,则转发它,如果不存在,什么都不做(只需加载表格并让它填写)?
这是我properties-local-prod中header转发的设置。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,例如,对于同一组表单,我应该能够定义 save-draft 对认证用户可见,但对匿名用户不可见......虽然我有已经用一些 not-that-nice javascript 魔法解决了这个问题。)
Orbeon 本身不会做任何事情,当一个人把类似的配置放到 properties-prod.xml
时,只是转发给定的 headers。
尽管默认的 Orbeon Forms 日志记录可能更好(关于进一步的 HTTP 调用以了解后台发生的事情),但日志中只有一行在请求到达时执行的操作。事实证明,我的自定义后端(持久层)需要 Authorization
header.
我不得不在我的 spring 安全配置中添加一个 (/contextRoot/orbeon).permitAll()
然后它开始工作了。
我有一个嵌入式 orbeon 实例,位于具有 JWT 安全性的 spring 网关后面。这很有效,对于 orbeon 构建器,我需要转发授权 header 才能使事情正常进行。 但是对于 form-runner,现在我有一个要求:对于某些表单,需要身份验证,对于其他一些则不需要。 可以通过以下方式配置 Orbeon:如果授权 header 存在,则转发它,如果不存在,什么都不做(只需加载表格并让它填写)?
这是我properties-local-prod中header转发的设置。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,例如,对于同一组表单,我应该能够定义 save-draft 对认证用户可见,但对匿名用户不可见......虽然我有已经用一些 not-that-nice javascript 魔法解决了这个问题。)
Orbeon 本身不会做任何事情,当一个人把类似的配置放到 properties-prod.xml
时,只是转发给定的 headers。
尽管默认的 Orbeon Forms 日志记录可能更好(关于进一步的 HTTP 调用以了解后台发生的事情),但日志中只有一行在请求到达时执行的操作。事实证明,我的自定义后端(持久层)需要 Authorization
header.
我不得不在我的 spring 安全配置中添加一个 (/contextRoot/orbeon).permitAll()
然后它开始工作了。