从XWiki 5.0版本开始,我们使用新的安全模块。虽然与之前的权限几乎兼容,但是还是有一些细微的差别。要获得最准确的信息,请查看安全模块的文档 。
权限可以被设置为不同范围或者不同层次。权限可以设置wiki全局级别,但是也可以被空间级别权限覆盖。而空间级别的权限会被页面级别的权限覆盖。
你可以设置一个用户只在一个空间编辑页面的权限,通过禁止用户访问全局wiki并在该空间授予用户编辑权限。
当在同一级别设置多个权限,禁止某些权限会覆盖其他的权限。如禁止view 权限会导致隐性禁止edit 权限。
如果用户无法编辑页面,尽管明确授予权限,除了检查该用户的权限,还要仔细检查该用户所在的组是不是禁止该成员访问该页面。
基于这些简单的规则和一些允许或禁止的类型,可以建立复杂的权限结构。
权限类型 view : 给予用户能够查看文档或使用API装载文档权限。comment : 让户可以添加评论。edit : 给予用户编辑页面和编辑页面所有对象的权限。delete : 给予用户能够把页面丢入回收站的权限。特殊权限 admin : 此权限是特殊的,因为它只能在一个空间或者整个wiki授予。admin状态是“undeniable”,在一个空间wiki管理员不能取消admin状态。从技术上来讲,管理员授予用户查看,评论,编辑,删除并从回收站永久删除页面的权限。programming : 程序员可以在wiki上执行任意的Java代码,从而能够获得该运行下wiki的系统用户的控制权。任何一个由程序员保存的页面都是权限很大的,因为它有着运行危险脚本的能力,因此为了最大限度地减少安全问题,应鼓励程序员注册额外的用户名。由于它影响了整个wiki(或多租户),programming权限只能在XWiki.XWikiPreferences进行设置和在多wiki环境(多租户),它只能在main wiki设置用户。需要注意的是programming权限具有管理员权限。register : 此权限通常对匿名用户(XWiki.XWikiGuest)授予或撤销,并给出了访客在wiki上注册的权限。此权限只能在XWiki.XWikiPreferences设置,并在管理界面设置。 subwikicreation (从5.2 M2开始) : 此权限允许用户创建子wiki。它只能在XWiki.XWikiPreferences设置,它只能由主wiki的用户来设置。Wiki访问配置 对于你的wiki,想要做的第一件事是配置策略访问。根据你打算使用wiki做什么,你有几种选择:
Open Wiki: 任何人都可以编辑页面(包括非注册用户) Public Wiki: 只有注册用户可以编辑页面,但注册是对所有人开放。这是默认wiki的默认配置。 Public Wiki with confirmed registration: 类似Public wiki,但新用户必须输入通过电子邮件发送的token来注册。 此外,常见的wiki访问配置使用实例:阻止普通用户创建新的空间。
Open Wiki 你可以配置你的wiki是开放的,让大家都可以编辑和无需注册或登录系统来发表评论。要做到这一点只需添加一个名为XWiki.XWikiGuest的用户,并授予他需要的权限。
目前还没有办法给每位访客根据自己的IP地址创建临时账号,所以在互联网上开放的wiki可能不是一个很好的决定。
Public Wiki 这是默认配置。
访客评论前验证码 从XWiki Enterprise 2.3M1开始
允许访客在页面上发表评论是好的,因为通常乐人帮助的人不愿意去注册,它创造了一个更开放的氛围。不幸的是文档评论区一些带有链接的评论会被搜索引擎认为是作弊。为了使你的网站公开,同时防止自动化的评论,你可以要求访客在评论前填写一个验证码。在点击评论窗口前验证码不会显示或者加载,所以你不必担心会导致占用过多的服务器的CPU。
你可以要求访客在一个wiki或者空间级别发表评论前填写一个验证码。你可以要求在wiki全局级别,但去除某个单一的空间的验证,或者你可以要求它在一个或多个空间,但不是整个wiki。
要启动评论前填写验证码,跳转到wiki或空间管理,点击“权限”区,点击复选框"Require unregistered users to solve a captcha when posting a comment on a page",则实现访客评论前填写验证码。
此设置没有允许访客评论,它只是要求访客评论前需要填写验证码。如果允许访客评论,你还要检查未注册用户“allow comment”复选框是否勾选。
例如:
Public Wiki带有确认注册 要求用户使用有效的电子邮件地址来进行注册。要做到这一点,需要在管理员界面并导航到注册部分:
"Use email verification":是否使用邮件验证,将电子邮件发送到用户注册的电子邮件地址。请确保SMTP服务器配置正确。 "Check Active fields for user authentication":是否使用主动式认证检查,阻止用户登录,除非他们点击电子邮件中发送的token "Validation e-Mail Content":验证邮件内容,放置在电子邮件中的内容 选项 邮箱地址确认
设置"Check Active fields for user authentication"和"Use email verification"为"YES"。可以修改"Validation e-Mail Content"内容,但是要包含激活账号的链接。
欢迎邮件
想要注册后有欢迎邮件,只要设置"Use email verification"为"YES"。修改"Validation e-Mail Content"因为没有必要认证用户信息。
注册须管理员批准
设置"Check Active fields for user authentication"和"Use email verification"为"YES"。修改"Validation e-Mail Content"去除验证链接因为需要通过审批来激活账号。一个管理员可以在用户文档(xwiki用户也是一个文档)的对象编辑器上修改"active"来激活账号(admin的对象编辑器位于:http://127.0.0.1:8080/xwiki/bin/edit/XWiki/Admin?editor=object )
阻止普通用户创建新的空间 你可以通过以下步骤限制了拥有权限的用户创建新的空间:
在全局权限配置,在群组下的XWikiAllGroup和用户组下的XWikiGuest限制编辑权限,并允许群组下的XWikiAdminGroup有编辑权限 在每一个空间权限配置,允许XWikiAllGroup有写权限 权限概述 下面是默认设置下所有权限的完整列表:
权限名称: 右侧简要说明 Availability: 在什么层级可以设置此权限? Page: 此权限可以设置在页面层级 Space: 此权限可以设置在空间层级 Wiki: 此权限可以设置在全局层级 Default status: 当权限checkbox空的情况下,权限是允许还是拒绝? ALLOWED: 这意味着如果没有其他权限设置,用户可以 __执行给定的操作DENIED: 意味着如果没有其他权限设置,用户不可以 __执行给定的操作Priority order: 不同权限设置的情况下,哪个是优先? Checking order: 在什么层级才是权限首先检查? View: 用户是否可以查看页面 Availability: Default status: ALLOWED Priority order: deny > allow > no setting Checking order: page > space > wiki Comment: 用户是否可以在页面添加评论 Availability: Default status: ALLOWED Priority order: deny > allow > no setting Checking order: page > space > wiki Edit: 用户是否可以编辑和修改保存页面 Availability: Default status: ALLOWED Priority order: deny > allow > no setting Checking order: page > space > wiki Delete: 用户是否可以删除该页面 Availability: Default status: DENIED (除非你是这个文档的创建者) Priority order: deny > allow > no setting Checking order: page > space > wiki Admin: 用户是否可以管理空间/wiki的管理员设置 Availability: Space (自动包含view, comment, edit, delete rights) Wiki (自动包含view, comment, edit, delete, register, program rights) Default status: DENIED Priority order: allow > deny > no setting Checking order: wiki > space Register: 用户是否可以创建新的用户帐户 Availability: Default status: ALLOWED Priority order: allow > deny > no setting Checking order: wiki Program: 是否用户可以在页面保存APIs & Groovy代码 Availability: Default status: DENIED Priority order: allow > deny > no setting Checking order: wiki Subwiki Creation: 用户是否可以创建subwikis Availability: Default status: DENIED Priority order: allow > deny > no setting Checking order: wiki 关于权限继承的说明 当一个权限在一定范围(页面,空间或全局)明确的设置给定的组或用户,那么其他的组和用户也必须有明确的设置,在这个范围或更大的范围。
例如,当你明确允许在一个给定的空间给“GroupA”组一个查看权限,那不在“GroupA”组的成员用户必须在这个空间有明确的查看权限设置或者在全局明确设置查看权限。
深入阅读