mod_auth_kerb/apache 2.4 未对子文件夹进行身份验证

mod_auth_kerb/apache 2.4 未对子文件夹进行身份验证

我使用 mod_dav_svn 和 Kerberos 身份验证 mod_authz_kerb 共享 subversion 存储库。所有这些都有效,但最近它停止了。它对 URL 的顶级文件夹进行用户身份验证,但不对任何子文件夹进行身份验证。

客户端的错误如下:

$ svn list https://myserver/svn/test
projectA/
projectB/
projectC/
projectD/

$ svn list https://myserver/svn/test/projectC
svn: E120190: Unable to connect to a repository at URL 'https://myserver/svn/test/projectC'
svn: E120190: Error running context: An error occurred during authentication

运行第一个命令后,服务器输出已通过 KDC 验证用户身份:

[auth_kerb:debug] [pid 10694] src/mod_auth_kerb.c(1093): [client :57101] kerb_authenticate_user_krb5pwd ret=0 [email protected] authtype=Basic
[authz_svn:info] [pid 10694] [client :57101] Access granted: '[email protected]' OPTIONS (null)

在服务器上运行第二条命令时我得到:

[authz_svn:debug] [pid 10577] mod_authz_svn.c(449): [client :57072] Path to authz file is /opt/svn/generic_acl.conf
[authz_core:debug] [pid 10577] mod_authz_core.c(802): [client :57072] AH01626: authorization result of Require valid-user : denied (no authenticated user yet)
[authz_core:debug] [pid 10577] mod_authz_core.c(802): [client :57072]   AH01626:   authorization result of <RequireAny>: denied (no authenticated user yet)

对于第二条命令,我没有得到任何涉及密码和 auth_kerb 的提示。

apache 的配置位于 /etc/apache2/conf-enabled/subversion.conf 中:

<Location /svn/test>
    Dav svn
    SVNPath /srv/svn/test

    SVNListParentPath On
    SVNAutoVersioning On

    AuthName "DOMAIN.CA"
    AuthType Kerberos
    KrbMethodNegotiate On
    KrbMethodK5Passwd On
    KrbAuthoritative On
    KrbVerifyKDC On
    KrbAuthRealms DOMAIN.CA
    Krb5KeyTab /etc/krb5.keytab
    KrbServiceName HTTP

    AuthzSVNAccessFile /opt/svn/generic_acl.conf

    Require valid-user
</Location>

我已重新配置指令,以针对与为 Kerberos 配置的相同 Active Directory 使用 Basic/htpasswd 身份验证和 LDAP。这两种替代配置似乎有效。只是最近的 apache/kerberos 模块似乎出了点问题。

任何建议将不胜感激。

我正在使用 Ubuntu 14.04.3、apache 2.4.7-1ubuntu4.5、libapache2-mod-auth-kerb 5.4-2.1

答案1

您的服务器上是否恰好有 shibboleth。Shibboleth 似乎破坏了基本身份验证,因为有效用户不起作用。尝试

ShibCompatValidUser 在 apache conf 中处于开启状态。

http://trwa.ca/2014/10/shibboleth-2-5-apache-2-4-and-breaking-apache-basic-auth/

对我来说,SVNParentPath 似乎不起作用。如果我使用 SVNPath,它会按预期工作(但随后我必须在 apache conf 中为每个 repo 配置一个条目)

我也认为有些东西坏了。几个月前我升级到了 ubuntu 14.04,但现在才开始再次使用 repo。

答案2

对于我来说,降级到以前的版本是可行的:

aptitude install libapache2-mod-svn=1.8.8-1ubuntu3 libapache2-mod-svn=1.8.8-1ubuntu3 libsvn1=1.8.8-1ubuntu3 subversion=1.8.8-1ubuntu3

并将它们搁置(至少直到修复发布为止):

aptitude hold libapache2-mod-svn libapache2-mod-svn libsvn1 subversion

相关内容