debian-7.11.0-amd64下测试Alfresco CE 5.0.d并限制openldap认证用户权限

    Alfresco (露天)社区版5.0.d用来做文档管理系统应该是不错的,预览功能很爽,不过还是缺少搜索(目录列表)时显示部分文件内容(高亮的关键词及前后文,类似所有的搜索引擎)功能,本文描述的需求是不到10人的小组,一个管理员账号上传电子文档,所有成员共用同一个普通账号通过openldap认证登录,权限限制到近乎guest权限,或者说只读权限,可搜索、预览、下载,不能上传,修改,删除。没有在线编辑文档需求,没有流程需求,没有复杂权限需求,就相当一个公共只读网盘

    先明确两点:一是share是不支持guest用户了,只有share之前很老的版本(那时还叫Alfresco Explorer)可以不登录使用,但是Alfresco Explorer又不支持预览,不符合我们的需求,只能放弃,变通解决办法是在share登录界面的文本或图片上公开那个普通账号的账号和密码,然后限制其权限,以达到类似匿名用户的功能(内网应用,不用太考虑安全性)。二是对JMX的支持是商业版本的功能,通过JMX是无法设置社区版本Afresco下的内容的(但是似乎可用于其他组件如solr),商业版通过JMX不重启改变网站为只读社区版是实际不了的。古老的Alfresco Explorer界面可以在以下网址见到:

http://www.istruzione.it/archivio/alfresco/faces/jsp/browse/browse.jsp.html

一、主要参考文章

http://docs.alfresco.com/5.0/concepts/auth-ldap-props.html
https://geofoss.net/2015/07/10/alfresco-5-0-ldap-authentication/

二、安装

安装不是本文的重点,网上的文章很多,注意Alfresco对内存有要求4G以上,2G肯定不行,我在虚拟机上分了3G内存可以完成安装但会警告部分功能可能受到影响

5.0.d
https://www.howtoing.com/install-alfresco-community-edition-on-centos-debian-ubuntu/
https://www.tecmint.com/install-alfresco-community-edition-on-centos-debian-ubuntu/
201707
https://www.howtoforge.com/tutorial/how-to-install-alfresco-cms-on-ubuntu-1804/

大致来说在debian-7.11.0-amd64下首先当然是安装Oracle官方的jdk1.8,再安装必须的支持组件

#apt-get install libfontconfig1 libsm6 libice6 libxrender1 libxt6 libcups2 libcairo2

howtoforge.com的文章中,ttf-mscorefonts-installer是可选的,反正我没有安装,opencpn是ubuntu特有的,debian下没有,当然可以试着去安装ubuntu的包,反正我也没有去试一样可以安装成功。5.0.d社区版下载地址

https://nchc.dl.sourceforge.net/project/alfresco/Alfresco%205.0.d%20Community/alfresco-community-5.0.d-installer-linux-x64.bin

 增加执行权限再运行就行了,如果系统已配置了samba和exim4会因为端口被占,安装时提示部分功能受限,但是还是可以完成安装并运行

#chmod +x alfresco-community-5.0.d-installer-linux-x64.bin
#./alfresco-community-5.0.d-installer-linux-x64.bin

安装的过程howtoing.com那篇文章非常详细,不过Google Docs Integration还是建议选否,原因!@#¥%……&*()——+

Google Docs Integration [Y/n] :n

debian可跳过howtoing.com那篇文章中防火墙的那段,安装后直接启动

#/etc/init.d/alfresco start

通过网址访问,登录界面就会出现

http://10.16.97.205:8080/share

三、配置openldap认证,openldap本身的配置在另一篇中详细描述了,这里是Alfresco部分

这步是最难的了,除了主要参考文章外还看了不少文章和配置文件,测试要反复重启Alfresco,巨慢,哎

https://github.com/gui81/docker-alfresco/blob/5.0.d-3/assets/ldap-authentication.properties
https://github.com/jmmorenogavira/docker-alfresco-community
http://www.surekhatech.com/blog/alfresco-authentication-and-synchronization-with-ldap
http://blog.nixwind.com/openldap-alfresco-authentication-syncronisation
https://wiki.univention.de/index.php?title=Cool_Solution_-_Alfresco

目前认证没问题,不允许每个用户都在用户主空间生成同名目录而是共用用户主空间根目录也生效了,但是由于没精力去研究synchronization的细节,openldap用户sync的完整性似乎还有问题,还出现过配置变更后可以登录的用户仍可登录,却用"管理工具“-”用户“-无法搜索到。组的同步也没效果("管理工具“-”组“的搜索结果为空,而且o字段起什么作用还没搞清楚),对于我们特定的需求是够了,只是原型测试不想再深入了。

#nano /opt/alfresco-5.0.d/tomcat/shared/classes/alfresco-global.properties

加入下列行

authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
synchronization.autoCreatePeopleOnLogin=true
synchronization.synchronizeChangesOnly=false
synchronization.syncWhenMissingPeopleLogIn=true
synchronization.syncOnStartup=true
synchronization.import.cron=0 */5 * * * ?

建立目录

#mkdir -p /opt/alfresco-5.0.d/tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1

在这个目录中新建文件ldap-authentication.properties,内容如下

ldap.authentication.active=true
ldap.authentication.allowGuestLogin=false
ldap.authentication.userNameFormat=uid=%s,ou=users,dc=domain,dc=xxx,dc=yyy
ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory
ldap.authentication.java.naming.provider.url=ldap://127.0.0.1:389
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.escapeCommasInBind=false
ldap.authentication.escapeCommasInUid=false
ldap.authentication.defaultAdministratorUserNames=admin
ldap.authentication.java.naming.read.timeout=0

ldap.synchronization.active=true
ldap.synchronization.java.naming.security.authentication=simple
ldap.synchronization.java.naming.security.principal=cn\=admin,dc\=domain,dc\=xxx,dc\=yyy
ldap.synchronization.java.naming.security.credentials=secret_password
ldap.synchronization.queryBatchSize=0
ldap.synchronization.attributeBatchSize=0
ldap.synchronization.groupQuery=(objectclass\=groupOfNames)
ldap.synchronization.groupDifferentialQuery=(&(objectclass\=groupOfNames)(!(modifyTimestamp<\={0})))
ldap.synchronization.personQuery=(objectclass\=inetOrgPerson)
ldap.synchronization.personDifferentialQuery=(&(objectclass\=inetOrgPerson)(!(modifyTimestamp<\={0})))
ldap.synchronization.groupSearchBase=ou\=groups,dc\=domain,dc\=xxx,dc\=yyy
ldap.synchronization.userSearchBase=ou\=users,dc\=domain,dc\=xxx,dc\=yyy
ldap.synchronization.modifyTimestampAttributeName=modifyTimestamp
ldap.synchronization.timestampFormat=yyyyMMddHHmmss'Z'
ldap.synchronization.userIdAttributeName=uid
ldap.synchronization.userFirstNameAttributeName=givenName
ldap.synchronization.userLastNameAttributeName=sn
ldap.synchronization.userEmailAttributeName=mail
ldap.synchronization.userOrganizationalIdAttributeName=o
ldap.synchronization.defaultHomeFolderProvider=companyHomeFolderProvider
ldap.synchronization.groupIdAttributeName=cn
ldap.synchronization.groupDisplayNameAttributeName=cn
ldap.synchronization.groupType=groupOfNames
ldap.synchronization.personType=inetOrgPerson
ldap.synchronization.groupMemberAttributeName=member
ldap.synchronization.enableProgressEstimation=true

保存,重启Alfresco,登录用户名:bill 密码123abc,配置文件中的以下行

ldap.synchronization.defaultHomeFolderProvider=companyHomeFolderProvider

作用就是不允许每个用户都在用户主空间生成同名目录而是共用用户主空间根目录

另一个问题是同一用户能否在同一时间段多点登录,实测没有问题。

四、配置禁止普通用户新建站点

参考以下网页

https://community.alfresco.com/thread/210918-hide-the-create-site-option-in-alfresco-50b

首先是找到public-services-security-context.xml文件模板,解压(jar就是zip格式,在windows下用winrar解压最简单)以下文件

/opt/alfresco/tomcat/webapps/alfresco/WEB-INF/lib/alfresco-repository-5.0.d.jar

 在解压出的alfresco子目录中就有public-services-security-context.xml,拷贝到如下目录

/opt/alfresco-5.0.d/tomcat/shared/classes/alfresco/extension

 编辑public-services-security-context.xml,找到如下行

org.alfresco.service.cmr.site.SiteService.createSite=ACL_ALLOW

修改为

org.alfresco.service.cmr.site.SiteService.createSite=ACL_METHOD.ROLE_ADMINISTRATOR

 保存,重启Alfresco,用普通用户登录,发现下拉菜单中仍有新建站点,点开后弹出新建站点对话框也正常,最后一步保存时才会提示没有权限。

五、对普通用户可上传的目录进行管理权限

首先确保只有一个openldap认证的普通用户,这样就无法启动流程

用普通用户登录,发现普通用户对"共享文件“还可以上传,注销,用管理员登录

点击"我的文件“-”已共享(共享文件夹)"-“更多..."-"管理权限“-组EVERYONE对应角色“贡献者”,点”贡献者“,改为”使用者"-保存

用普通用户登录,发现普通用户对"共享文件“不可以上传了。

留待以后解决的问题1、普通用户可将文档加入收藏夹,2、对文档可标喜欢标记,3、可将文档标记为共享让未登录用户可见。

以后再研究这几项如何禁用。目前有一个临时应对方法就是全网站只读,但是全网站只读管理员也无法操作了,而且就没有必要建普通用户了,直接公开管理员密码不就行了?想一下还是要建普通用户,如果公开管理员密码,偶尔关闭全站只读时所有人都可以修改网站了,哈哈。这就是虽然只有一个普通用户还是通过openldap外部认证的好处,openldap服务是可以关闭的。

六、设置网站只读

这个最简单,编辑

/opt/alfresco-5.0.d/tomcat/shared/classes/alfresco-global.properties

加入一行

server.transaction.allow-writes=false

保存,重启Alfresco生效。

待解决的三个问题解决前,可以通过集中时间上传、严格执行特定的操作流程结合全站只读功能来确保普通用户不能修改网站,
平时全站只读,定期上传文件时先停openldap服务(service slapd stop),关闭全站只读并重启Alfresco生效,只用管理员权限上传文档并且只上传到“共享文件”目录中,上传结束后开启全站只读并重启Alfresco生效,再启动openldap服务(service slapd start)。

七、修改登录界面公开账号密码

参考以下文章

http://fcorti.com/2013/08/12/customize-alfresco-share-login-light-theme/

先用管理员账号登录,“管理工具“-”主题“-确认当前使用”灰白主题“ ,编辑以下图片,加入普通用户登录的用户名和密码提示

/opt/alfresco-5.0.d/tomcat/webapps/share/themes/greyTheme/images/logo.png

lightTheme的最好也编辑一下

/opt/alfresco-5.0.d/tomcat/webapps/share/themes/lightTheme/images/logo.png

八、原型测试结束 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值