xPages xAgent 安全性
Posted
技术标签:
【中文标题】xPages xAgent 安全性【英文标题】:xPages xAgent Security 【发布时间】:2012-04-21 12:58:20 【问题描述】:我目前正在实施 Mark Leusink 的 OpenNTF 多文件上传器。
这个非常棒的自定义控件使用 xAgent 将选定的文件附件嵌入到目标 Notes 文档中。在我将 Authors 和 Readers 字段添加到 Notes 文档之前,一切正常。现在上传文件时出现安全错误 (402)。
我的想法是上传 xAgent 无法编辑目标文档以附加文件。如果我删除安全字段,一切都会恢复正常。
我的问题是,xAgents 是否以与当前用户相同的安全性运行?如果没有,我能否像为 Lotus Script 代理一样为 xAgent 设置“运行身份”用户?
【问题讨论】:
是的,所有 XPage 都在当前用户的权限下运行。 Declan 的建议允许您混合搭配:对通过 sessionAsSigner 获得的对象执行的操作使用签名者的权限;对所有其他对象执行的操作使用当前用户的。 【参考方案1】:我建议您查看 xAgent 的代码并重写它以使用 sessionAsSigner 访问数据库/文档以上传文件。这将导致它作为应用程序的签名者运行,并绕过您遇到的安全问题。
【讨论】:
【参考方案2】:Tom 和 Declan 的答案都是正确的,但这不包括文件上传者。
它使用 Flash 组件进行实际上传(称为 SWFUpload)。由于浏览器 cookie 不与 Flash 共享,因此它无法将用户的会话 cookie 与文件一起发送,因此执行上传的用户未登录(又名匿名)到 Domino 服务器。这就是为什么上传者需要允许匿名用户在 ACL 中读取/写入公共文档,并且处理上传文件的 XPage/XAgent (aUpload.xsp) 设置为允许“公共访问用户”。它使用 sessionAsSigner 对象来访问数据库的内容
通常,上述设置将允许每个人匿名上传文件。这就是为什么我根据 Mark Barton 的想法实现了自定义 authentication solution:在每个文件上传之前,都会向 XPage 发出请求以检索唯一键。该 XPage (aGetAuth.xsp) 确实在用户的凭据下运行,并将密钥存储在数据库的文档中。该密钥与上传的文件一起发送,并与存储的密钥进行比较。仅当密钥匹配时才允许上传。
首先我会检查您的情况,如果 aUpload.xsp XAgent 中的代码可以使用 sessionAsSigner 调用读取和写入目标文档。
【讨论】:
【参考方案3】:Mark、Declan 和 Tim,感谢您的参与。
我修改了xAgent **aGetAuth.xsp**
以使用sessionAsSigner
来获取当前数据库。起初我收到错误"sessionAsSigner not found"
。
Google 给出了一个快速的答案是在测试之前重新签署模板。在重新签署模板两次并执行“干净”之后,一切都运行良好。
【讨论】:
以上是关于xPages xAgent 安全性的主要内容,如果未能解决你的问题,请参考以下文章