本节接着上篇文章介绍ApacheSVN服务器的安装问题,本节主要针对认证选项问题,这里我发表一下个人理解,和大家讨论讨论,希望对你有所帮助。
认证选项
1、ApacheSVN服务器基本HTTP认证
最简单的客户端认证方式是通过HTTP基本认证机制,简单的使用用户名和密码来验证一个用户的身份。Apache提供了一个htpasswd工具来管理一个用户文件,这个文件包含用户名和加密后的密码,这些就是你希望赋予Subversion特别权限的用户。htpasswd可以在Apache的bin安装目录下找到。具体使用方法如下:
创建用户文件:htpasswd-cE:\usr\Apache2.2\bin\passwd.confusername
添加新用户(-m表示以MD5加密密码,可选项):htpasswd[-m]E:\usr\Apache2.2\bin\passwd.confNewusername
更改用户密码:htpasswd[-m]E:\usr\Apache2.2\bin\passwd.confusername
删除用户(要用大写的D):htpasswd–DE:\usr\Apache2.2\bin\passwd.confusername
接下来修改httpd.conf,在Location标签中加入如下内容:
- AuthTypeBasic
- AuthName"svnrepos"
- AuthUserFileE:/usr/Apache2.2/bin/passwd.conf
- Requirevalid-user
说明:
AuthTypeBasic:启用基本的验证,比如用户名/密码对。
AuthName"svnrepos":当一个认证对话框弹出时,出现在认证对话框中的信息。(最好用英文,TortoiseSVN不支持中文,安装语言包除外。)
AuthUserFileE:/usr/Apache2.2/bin/passwd:指定E:\usr\Apache2.2\bin\passwd为用户文件,用来验证用户的用户名及密码。
Requirevalid-user:限定用户只有输入正确的用户名及密码后才能访问这个路径
重新启动Apache,打开浏览器访问版本库。ApacheSVN服务器的Apache会提示你输入用户名和密码来认证登陆了,现在只有passwd文件中设定的用户才可以访问版本库。也可以配置只有特定用户可以访问,替换上述"Requirevalid-user"为"Requireusertonyrobert"将只有用户文件中的tony和robert可以访问该版本库。有的时候也许不需要这样严格的访问控制,例如大多数开源项目允许匿名的读取操作,而只有认证用户才允许写操作。为了实现更为细致的权限认证,可以使用Limit和LimitExcept标签。例如:
- <LimitExceptGETPROPFINDOPTIONSREPORT>
- requirevalid-user
- < span>LimitExcept>
以上配置将使匿名用户有读取权限,而限制只有passwd中配置的用户可以使用写操作。如果这还不能满足你的要求,你希望精确的控制版本库目录访问,可以使用Apache的mod_authz_svn模块对每个目录进行认证操作。
2、ApacheSVN服务器用mod_authz_svn进行目录访问控制
首先需要让Apache将mod_authz_svn模块加载进来。在Subversion的安装目录中找到mod_auth_svn模块,将其拷贝到Apache安装目录的modules子目录下。修改httpd.conf文件,添加:
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
现在可以在Location标签中使用authz的功能了。
【编辑推荐】