一个 Apache 位置需要基于 LDAP 的基本身份验证,子位置需要特定的组成员资格

Require LDAP-based basic authentication for one Apache location and specific group membership for a sub-location

我在 Ubuntu 14 上安装了 Apache 2.4.7 运行。我安装了 slapd 并创建了两个人,uid=wilma,ou=People,dc=mysite,dc=comuid=betty,ou=People,dc=mysite,dc=com。他们都有对象 类 inetOrgPersonposixAccountshadowAccount。 (我最终想使用 LDAP UID 和密码进行单一登录。)我有基于 LDAP 的身份验证工作,因此只有 LDAP 身份验证的用户才能访问 // 上的此身份验证仅在网站上线之前有效。但是,我有一个应用程序,我想永久使用基于 LDAP 的身份验证,位置为 /my-app,并且我想将对该应用程序的访问限制为特定的一组人。我在 LDAP 中创建了一个名为 my-app-users 的 POSIX 组。我将 uid=wilma,ou=People,dc=mysite,dc=com 添加到该组。

免责声明:我对 Apache 经验不多,对 LDAP 还是全新的。如果那是错误的,我不会承诺使用 POSIX 组。 (我确实选择了那个对象类型,因为我认为这个组可能需要偶尔通过 SSH 连接到服务器。再一次,全新的!)

问题是 LDAP 身份验证让 Wilma 和 Betty 都进入 /my-app,但我只想要 Wilma,因为她是 my-app-users.

的成员

我试过在不同的地方放置它的一些变体。

AuthType Basic 
AuthBasicProvider ldap
AuthName "Access to My App is Restricted"
AuthLDAPInitialBindAsUser on
AuthLDAPInitialBindPattern (.*) uid=,ou=people,dc=mysite,dc=com
AuthLDAPURL ldap://localhost/DC=myside,DC=com?uid
require valid-user
Require ldap-group cn=super-my-app-users,ou=Groups,dc=mysite,dc=com

这里:

# my-app.conf for my app.
<IfModule mod_alias.c>
    Alias /my-app /usr/share/my-app/htdocs
</IfModule>

# default.conf
<VirtualHost *:443>
    <Location /my-app>
        # Here
    </Location>
</VirtualHost>

然后这里(从之前的地方去掉之后):

<Directory /usr/share/my-app/htdocs/>
    # Here
</Directory>

我做了很多网络搜索来解决这个问题,但我总是以两个用户都进入为结尾。

提前致谢!

问题是 2 个 require 指令。如果您的用户在小组检查之前是 "valid-user",他们就会进入。删除第一个。