您的位置:首页 > 运维架构 > Apache

利用Apache与mod_wsgi 实现svn 动态权限鉴定(二)

2016-10-13 14:57 429 查看
前面已经写到可以通过wsgi 可以实现动态的svn密码鉴定,但是还不够,因为svn还要组的概念在里面,

原先通过django手册和mod_wsgi手册里面的配置:
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/apache-auth/ https://modwsgi.readthedocs.io/en/develop/user-guides/access-control-mechanisms.html#http-user-authentication
发现 WSGIAuthGroupScript 这个配置根本就不起作用,经过反复测试还是没有去执行里面的脚本

这个是我的配置:

<Location />
   DAV svn
   SVNParentPath /var/svn/repos
       AuthType  Basic
       AuthName "Authorization SVN"
       AuthBasicProvider wsgi
       WSGIAuthUserScript /var/www/auth.wsgi
       WSGIAuthGroupScript /var/www/auth.wsgi
       Require group secret-agents
       Require valid-user
</Location>


发现根据手册里面说group这个配置会执行一个 
groups_for_user
的方法,但是在去svn客户端请求的时候,groups_for_user 这个方法根本就没有执行,

百度和谷歌上面也是没有一点资料

最终在无意间看到了git上面的一个issue 才发现原来
https://github.com/GrahamDumpleton/mod_wsgi/issues/25
在配置还需要加上

Require wsgi-group secret-agents


而我前面一直是

Require group secret-agents


所以Apache根本就不会去执行 WSGIAuthGroupScript  上面配置脚本

总结下:

       官方手册上如果有坑,真是会害死人啊!~~

目前还有一个问题:

        虽然已经可以动态对svn的账户进行动态鉴权,在根据手册上面所述的,wsgi会去运行check_password和groups_for_user这两个方法但是,他们返回的都只是一个是True或者False 一个是groups的一个数组,而wsgi获取到这两个返回值如果不符合条件就会直接返回给svn客户端,svn客户端会马上弹出一个basic认证的窗口让用户再填写账户密码,这样就很影响用户体验的,不知道是否有大虾能够熟悉wsgi机制以及wsgi auth权限鉴定的,能来解决我的问题:只要用户再svn客户端登录成功了,但是他没有写入权限,只要他上传一个文件的时候就直接返回一个错误或者提示给用户,而不是弹出一个用户登录框出来。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python django 密码 apache svn
相关文章推荐