我们使用gitolite的ACL机制来控制谁有权访问不同的存储库。我们还使用CGIT和Apache httpd来浏览可读的存储库。
我们也想在Apache httpd访问控制系统中使用gitolite ACL。
是否有提供此功能的Apache httpd authn / authz模块?
谢谢!
答案 0 :(得分:1)
我刚刚使用这个cgi Perl脚本集成了CGit和gitolite,调用了gitolite:cgit/cgit.pl.tpl
。
(不要介意@H@
,这些是模板占位符,为了生成实际的Perl脚本,应该稍后对其进行估值)
这个想法是受益于Apache所做的身份验证:
my $remote_user=$ENV{"REMOTE_USER"};
在调用Gitolite时使用该用户来检查是否可以授予对repo的访问权限,如果授予访问权限则调用实际的cgit.cgi
C过程:
use Gitolite::Rc;
use Gitolite::Common;
use Gitolite::Conf::Load;
(my $repo)=($path_info =~ /\/([^\/]+)/);
my $perm = "R";
if ($repo ne "") {
my $aperm = access( $repo, $user, 'R', 'any' );
# my ($aperm, $creator) = &repo_rights($repo);
$perm=$aperm;
}
if ($perm !~ /DENIED/) {
system("@H@/cgit/cgit.cgi");
}
else {
print "Content-type: text/html\n\n";
print "<html>\n";
print "<body>\n";
print " <h1>HTTP Status 403 - Access is denied</h1>\n";
print " You don't have access to repo <b>$repo</b> as <b>$user</b>\n";
print "</body>\n";
print "</html>\n";
}