6

我可以在 apache2/sites-enabled/000-default 配置文件中有两个 AuthUserFile 指令吗?

    <Location /repo/trac>
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/passfile1
      AuthUserFile /etc/apache2/passfile2
      Require valid-user
    </Location>

我想要两种类型的用户的用户名/密码。

  • DEV - 可以访问 SVN 和 Trac
  • NOM - 只能访问 Trac

我有两个选择:为 Trac 和 Svn 保留单独的密码文件并分别包含它们,或者在 1 中包含 2 个密码文件我将 DEV 放在其他 NOM 中,并且仅包含 1 个用于 svn 并在 trac 位置下包含两个。

4

2 回答 2

9

您应该将所有内容移动到单个密码文件中,然后使用组来控制对特定资源的访问。您可以/etc/apache2/groups使用以下内容创建:

DEV: bob alice
NOM: norm fred bart

然后修改您的配置,使其看起来像这样:

<Location /repo/trac>
  AuthType Basic
  AuthName "Trac"
  AuthUserFile /etc/apache2/passfile
  AuthGroupFile /etc/apache2/groups
  Require group DEV NOM
</Location>

这将允许DEVNOM组的成员访问此资源。

如果您真的想使用多个密码文件,请参阅mod_authn_alias的文档,其中有一个可以做到这一点的示例。

于 2012-05-10T19:40:36.250 回答
0

从文档中,您实际上可以拥有多个密码文件诀窍是使用 AuthnProviderAlias

https://httpd.apache.org/docs/2.4/mod/mod_authn_core.html

在您的全局配置中

(正如@RickyLevi 所说,AuthnProviderAlias 不能出现在虚拟主机中)

<AuthnProviderAlias file file1>
    AuthUserFile "/www/conf/passwords1"
</AuthnProviderAlias>

<AuthnProviderAlias file file2>   
    AuthUserFile "/www/conf/passwords2"
</AuthnProviderAlias>

在您的虚拟主机中:

<Directory "/var/web/pages/secure">
    AuthBasicProvider file1 file2
    AuthType Basic
    AuthName "Protected Area"
    Require valid-user
</Directory>

https://httpd.apache.org/docs/2.4/en/mod/mod_auth_basic.html#authbasicprovider

按顺序查询提供者,直到提供者找到所请求的用户名的匹配项,此时该唯一提供者将尝试检查密码。验证密码失败不会导致将控制权传递给后续提供者。

于 2019-12-16T13:59:03.930 回答