标签: mod-auth-ldap

使用基于请求字符串的 LDAP 动态验证 Apache?

是否可以将请求 URI 的一部分用作 mod_authnz_ldapRequire ldap-group指令的输入?

我正在尝试动态检查对一堆不同项目目录的访问,所有目录都在http://testserver.com/projects/下,这样访问的用户/projects/abc将被检查cn=abc,ou=groups,dc=test. 理想情况下,我希望在不为每个项目创建单独的 Location 指令的情况下执行此操作,因为很可能有数百个。

我想出了这个,它说明了一般概念,但它不起作用(project_name 不检索实际变量内容):

<Location /projects>
    SetEnvIf Request_URI "/projects/([-a-z0-9A-Z_]+)/" project_name=$1

    AuthType Basic
    AuthBasicProvider ldap
    AuthName "Restricted Resource - SVN (LDAP)"
    AuthLDAPURL "ldap://127.0.0.1:389/dc=test?uid"
    AuthLDAPGroupAttributeIsDN off
    AuthLDAPGroupAttribute memberUid
    Require ldap-group cn=%{project_name},ou=groups,dc=test
</Location>
Run Code Online (Sandbox Code Playgroud)

帮助?

ldap environment-variables mod-auth-ldap apache-2.2

12
推荐指数
1
解决办法
673
查看次数

基于 LDAP 组成员资格的 Apache 用户身份验证不起作用

我想验证并授权一个 LDAP 组(Windows 上的 ApacheDS 2.0.0-20,使用组中的多个 uniqueMember 属性以及 httpd 配置中的“需要 ldap-group”语句)的所有用户访问 Web 资源。

尝试进行身份验证的用户也是此 LDAP 组的一部分,如果我在 httpd 配置中使用“需要有效用户”语句而不是“需要 ldap 组”语句,则该用户将获得授权。

设置:

  • 基于 Linux 的 Apache 2.4.23(来自 OpenSuse 42.1 Apache 存储库)
  • LDAP:基于 MS Windows 的 ApacheDS 2.0.0-20

ApacheDS LDAP 中的组配置:

LDAP 组配置

httpd的配置摘录:

<AuthnProviderAlias ldap ldapconfig>
        LDAPReferrals Off
        AuthLDAPBindDN "cn=query,ou=users,o=WJWext"
        AuthLDAPBindPassword secretpassword
        AuthLDAPURL "ldap://ldap.hostname:10389/o=WJWext?uid?sub"
</AuthnProviderAlias>

...
LogLevel trace7

<Location /xy>
...
        AuthType Basic
        AuthName "xy"
        AuthBasicProvider ldapconfig
        AuthLDAPGroupAttributeIsDN on
        AuthLDAPGroupAttribute uniqueMember
        AuthLDAPMaxSubGroupDepth 0
        AuthLDAPSubGroupClass groupOfUniqueNames
        Require ldap-group cn=groupname,ou=groups,o=WJWext
...
</Location>
Run Code Online (Sandbox Code Playgroud)

httpd的日志文件显示用户可以通过身份验证,但没有被组授权:

[Tue Nov …
Run Code Online (Sandbox Code Playgroud)

httpd ldap mod-auth-ldap apache-2.4

6
推荐指数
1
解决办法
2万
查看次数

AuthLDAPURL 中的更多搜索过滤器

在 AuthLDAPURL 中是否可以有多个搜索过滤器?

示例 uid 过滤器:

<Location /test/>
        AuthType Basic
        AuthName "Test"
        AuthBasicProvider ldap
        AuthUserFile /dev/null
        AuthLDAPURL ldap://example.test.com/o=test,c=com?uid
        AuthLDAPBindDN "******"
        AuthLDAPBindPassword ******
        require ldap-group cn=group01,o=test,c=com
</Location>
Run Code Online (Sandbox Code Playgroud)

我们需要搜索uid或mail。喜欢...

AuthLDAPURL ldap://example.test.com/o=test,c=com?uid|mail
Run Code Online (Sandbox Code Playgroud)

解决方案(它对我有用):

使用 Apache 2.4 测试 http://httpd.apache.org/docs/current/mod/mod_authn_core.html

<AuthnProviderAlias ldap ldap-uid>
    AuthLDAPBindDN "******"
    AuthLDAPBindPassword ******
    AuthLDAPURL "ldap://example.test.com/o=test,c=com?uid??(&(isMemberOf=cn=group01,o=test,c=com))"
</AuthnProviderAlias>

<AuthnProviderAlias ldap ldap-mail>
    AuthLDAPBindDN "******"
    AuthLDAPBindPassword ******
    AuthLDAPURL "ldap://example.test.com/o=test,c=com?mail??(&(isMemberOf=cn=group01,o=test,c=com))"
</AuthnProviderAlias>


<Location "/test/">
    Order deny,allow
    Allow from all

    AuthType Basic
    AuthName "Login with mail or uid"
    AuthBasicProvider ldap-uid ldap-mail
    LDAPReferrals Off
    Require valid-user
</Location>
Run Code Online (Sandbox Code Playgroud)

谢谢托宁!

search filter mod-auth-ldap apache-2.2

5
推荐指数
1
解决办法
9280
查看次数

apache mod_authnz_ldap - 使用空白用户名时出现 500 错误

我在 Windows Server 2012 上运行了 Apache 2.4。

我已经让 mod_authnz_ldap 工作,除非用户输入空白用户名。这会导致 500 内部服务器错误。

这是 httpd.conf 中“员工”区域的条目...

<Location "/staff">
    AuthType Basic
    AuthName "Staff Area"
    LDAPReferrals Off
    AuthBasicProvider ldap
    AuthUserFile /dev/null
    AuthLDAPBindDN Administrator@school.com.au
    AuthLDAPBindPassword MyPassword
    AuthLDAPURL "ldap://server-dc1:389/ou=DomainUsers,dc=school,dc=com,dc=au?sAMAccountName?sub"
    Require ldap-group cn=staff,ou=staff,ou=DomainUsers,dc=school,dc=com,dc=au
</Location>
Run Code Online (Sandbox Code Playgroud)

有什么明显的我遗漏了吗?还有其他人使用 mod_authnz_ldap 吗?您的服务器不喜欢空白用户名吗?

ldap mod-auth-ldap windows-server-2012 apache-2.4

5
推荐指数
1
解决办法
4987
查看次数

在 apache 上使用 ldap auth 调试超时

我正在尝试调试我在 Apache 上遇到的超时问题,几个月了。

该模式如下所示:

在新会话的每个第一个请求中(或在最后一个请求之后的一段时间后),浏览器立即要求提供凭据,然后使用基本身份验证发送请求。然后服务器在发送结果之前正好等待 1 分钟。

在此处输入图片说明

随后的请求会立即得到答复,这只发生在一段时间后的请求(无法准确定位,5 到 15 分钟之间)。

等待时间可以精确重现 60 秒这一事实对我来说就像超时。如果我取消请求并点击重新加载,我会立即获得请求的 URL。

由于密码提示也会立即出现,因此我可以排除客户端和服务器之间的 SSL 握手问题,或那条腿上的 DNS 问题。我请求的是 PHP 脚本还是空白文本文件都没有关系,这也排除了服务器上脚本的问题。我猜认证过程的结果会被缓存一段时间,因此后续请求不需要。

请注意,身份验证总是会成功,因此我也可以排除“域控制器没有回答”的问题。

Apache 2.4 在 Windows Server 2012 R2 上运行。它为 LDAP 身份验证配置:

<Location />
    AuthType Basic
    AuthName "AD Login"
    AuthBasicProvider ldap
    LDAPReferrals Off
    #AuthLDAPUrl ldap://dc01.domain.de:3268/dc=ad,dc=domain,dc=de?sAMAccountName?sub?(objectClass=*)
    #AuthLDAPUrl ldap://ad.domain.de:389/dc=ad,dc=domain,dc=de?sAMAccountName?sub?(objectClass=*) STARTTLS
    AuthLDAPUrl ldap://ad.domain.de:389/dc=ad,dc=domain,dc=de?sAMAccountName?sub?(objectClass=*) TLS
    AuthLDAPBindDN "service@domain.de"
    AuthLDAPBindPassword "secret"
    Require valid-user
    Require all denied
</Location>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我尝试了与域控制器的不同连接类型,我使用哪种加密方法,或者我是否完全传递加密似乎并不重要。

ad.domain.de 解析为多个域控制器,但如果我连接到特定 DC,行为是相同的。

错误日志中没有条目LogLevel info,我还犹豫是否将其增加到debug,因为我从经验中知道我在筛选生成的调试信息时遇到了麻烦。

有什么我错过的东西可以用来调试问题,还是我必须通过调试级别的日志记录?

active-directory timeout mod-auth-ldap apache-2.4

5
推荐指数
1
解决办法
6346
查看次数

Apache LDAP 身份验证空闲超时

作为我们升级系统以遵守的安全策略的一部分,我需要将 Apache LDAP Auth 设置为 15 分钟的空闲超时。

即,如果用户停止使用系统超过 15 分钟,则下次使用系统时将需要重新进行身份验证。

这可能吗?如果是这样,我怎样才能实现它?

我的 .htaccess 文件中的身份验证配置如下所示:

AuthName "AD Authentication"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPUrl "URL"
AuthLDAPBindDN "DN"
AuthLDAPBindPassword "PASSWORD"
AuthzLDAPAuthoritative Off
require valid-user
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mod-auth-ldap apache-2.2

2
推荐指数
1
解决办法
5944
查看次数