Apache SVN 配置 LDAP 验证,不再需要passwd文件

avatar 2021年12月24日14:25:13 6 1182 views
博主分享免费Java教学视频,B站账号:Java刘哥

最近我们准备改造公司的 svn 代码仓库

不再使用 svn 协议,改成 apache 实现的 http 协议,目的是请求能有日志,方便统计每天有多少人commit代码,checkout代码等

本期还有一个需求就是要把 svn的 passwd 文件删除掉,因为该文件是明文存储用户名和密码的,很不安全。我们准备才有windows的 AD 域来校验账号密码 (用户在用户中心平台修改密码会同步更新 ad 域的用户名和密码)

本文介绍下一些细节配置

一、apache 完整配置

先上完整配置,然后对几个核心的配置分别说明

记得将几个 so 文件从 svn 的bin目录拷贝到 apache 的modules

mod_authz_svn

mod_dav_svn.so

 

核心在 apache 的 httpd.conf 的配置

完整配置如下

ThreadsPerChild 128
MaxMemFree 64
MaxRequestsPerChild  0
MaxKeepAliveRequests 2000
KeepAliveTimeout 5
Win32DisableAcceptEx
LimitXMLRequestBody 0
LimitRequestFieldSize 12392

ServerRoot "F:/soft/Apache2.2"
ServerName "10.1.5.203:8080"
ServerSignature Off
ServerTokens Prod
DocumentRoot "htdocs"
FileETag MTime Size

PidFile "${TEMP}\VisualSVNServer.pid"

Listen "8080"

LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule alias_module modules/mod_alias.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule expires_module modules/mod_expires.so
LoadModule log_config_module modules/mod_log_config.so

LoadModule dav_module modules/mod_dav.so

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

<Directory />
  Options FollowSymLinks
  AllowOverride None

  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^/svn$
  RewriteRule ^(.*/svn)$ %1/ [R=301,L]
</Directory>

SVNInMemoryCacheSize 16384

<Location /svn>
	AuthLDAPBindDN "cn=administrator,cn=users,dc=xxhtest,dc=com"
	AuthLDAPBindPassword "123456"
	AuthName "Welcometo svn . Use your info to pass in !!!"
	AuthType Basic
	AuthBasicProvider ldap
	AuthzLDAPAuthoritative off
	AuthLDAPURL "ldap://192.168.0.123/dc=xxhtest,dc=com?sAMAccountName?sub?(objectClass=*)"
	Require valid-user
	DAV svn
	SVNListParentPath off
	SVNParentPath F:/soft/Subversion/repository
	AuthzSVNReposRelativeAccessFile authz  
</Location>  


Alias /web-ui-static htdocs/web-ui-static

<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>

ErrorLog "logs/error.log"

LogLevel debug

LogFormat "[%h][%u][%{%Y-%m-%d %T}t][%{SVN-ACTION}e][%{SVN-REPOS-NAME}e]" combined
CustomLog "|F:/soft/Apache2.2/bin/rotatelogs -l F:/soft/Apache2.2/logs/svn-access_%Y%m%d.log 86400" combined env=SVN-ACTION
	
TraceEnable off

DefaultType text/plain




 

二、日志格式配置

最终生成的日志格式如下

[10.1.5.203][lyz][2021-12-24 08:45:05][checkout-or-export / r42 depth=infinity][%E6%B5%8B%E8%AF%95%E9%A1%B9%E7%9B%AE]
[10.1.5.203][lyz][2021-12-24 08:45:11][checkout-or-export / r31 depth=infinity][repo1]
[10.1.5.203][lyz][2021-12-24 08:46:00][commit r32][repo1]
[10.1.5.203][zhangsan][2021-12-24 11:42:06][status / r32][repo1]
[10.1.5.203][zhangsan][2021-12-24 11:47:06][commit r33][repo1]
[10.1.5.203][zhangsan][2021-12-24 12:14:43][commit r34][repo1]
[10.1.5.203][zhangsan][2021-12-24 12:15:04][log (/) r34:0 limit=100 discover-changed-paths revprops=(svn:log svn:date svn:author)][repo1]

关于日志的配置主要是这2行配置

LogFormat "[%h][%u][%{%Y-%m-%d %T}t][%{SVN-ACTION}e][%{SVN-REPOS-NAME}e]" combined
CustomLog "|F:/soft/Apache2.2/bin/rotatelogs -l F:/soft/Apache2.2/logs/svn-access_%Y%m%d.log 86400" combined env=SVN-ACTION

 

 

三、SVN 和 LDAP 配置

<Location /svn>
	AuthLDAPBindDN "cn=administrator,cn=users,dc=xxhtest,dc=com"
	AuthLDAPBindPassword "123456"
	AuthName "Welcometo svn . Use your info to pass in !!!"
	AuthType Basic
	AuthBasicProvider ldap
	AuthzLDAPAuthoritative off
	AuthLDAPURL "ldap://192.168.0.222/dc=xxhtest,dc=com?sAMAccountName?sub?(objectClass=*)"
	Require valid-user
	DAV svn
	SVNListParentPath off
	SVNParentPath F:/soft/Subversion/repository
	AuthzSVNReposRelativeAccessFile authz  
</Location>  

 

四、测试

经过以上配置,可以重启 apache

然后把 SVN 仓库里的passwd文件删除

用小乌龟 checkout,输入 AD 域里的用户名密码就可以了

 

 

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0