我们使用gitolite的ACL机制来控制谁有权访问不同的存储库。我们还将CGIT与Apache httpd结合使用,以允许浏览可读存储库。
我们还希望在Apache httpd访问控制系统中使用gitolite ACL。
是否有Apache httpd authn/authz模块提供此功能?
谢谢!
发布于 2015-06-25 14:58:29
不久前,我已经用这个cgi Perl脚本集成了CGit和gitolite,它的名称是gitolite:cgit/cgit.pl.tpl。
(不要介意@H@,它们是模板占位符,应该在以后进行赋值,以便生成实际的Perl脚本)
这个想法是为了从Apache完成的身份验证中受益:
my $remote_user=$ENV{"REMOTE_USER"};并在调用Gitolite以检查是否可以授予对存储库的访问权限时使用该用户,如果授予访问权限,则调用实际的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";
}https://stackoverflow.com/questions/31032816
复制相似问题