我们有一个 Web 界面,可通过 API 调用配置负载均衡器集群。该 Web 界面使用三个 (python) 脚本。第一个脚本显示负载均衡器的当前设置,第二个脚本显示可以更改设置的菜单,第三个脚本将配置所选设置并执行一些日志记录。由于大多数用户只对设置感兴趣,因此任何人都可以访问该脚本。为了访问第二个和第三个脚本,我们需要对用户进行身份验证。第一个脚本位于
<root>/cgi-bin/RO
中,第二个和第三个脚本位于 <root>/cgi-bin/RW
中。 <root>/cgi-bin/RO
的目录权限为 Require all granted
。 ldap 配置和 <root>/cgi-bin/RW
的目录权限是:
<AuthnProviderAlias ldap LDAP>
AuthLDAPBindDN "CN=SVC_APIACCESS,OU=Service Accounts,OU=ACCOUNTS,OU=BEHEER,DC=example,DC=org"
AuthLDAPBindPassword <password>
AuthLDAPURL "ldap://1.2.3.4 6.7.8.9/OU=ACCOUNTS,OU=APPS,DC=ont,DC=example,DC=org?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>
<Directory "/<root>/cgi-bin/RW">
Options +ExecCGI
Require valid-user
AllowOverride AuthConfig
AuthType Basic
AuthName "Enter LDAP credentials"
AuthBasicProvider LDAP
AuthUserFile /dev/null
</Directory>
这个想法是在成功身份验证后捕获 REMOTE_USER 设置,并在出现问题时在日志记录中使用该设置以进行审核。访问第二个脚本时,会出现一个弹出窗口,要求输入用户名和密码。身份验证成功后,将显示配置页面。
这曾经有效。由于某种原因,不再显示要求身份验证的弹出窗口,并且脚本在访问用于包含 REMOTE_USER 值的变量时提前终止。奇怪的是没有生成日志记录,当脚本尝试访问未定义的变量时似乎没有抛出错误,selinux 不会记录任何策略违规,httpd 也不会记录联系 ldap 服务器的失败。有谁知道这里发生了什么吗?
事实上,您没有看到 LDAP 服务器的任何流量,这可能意味着
AuthLDAPURL
没有像我们想象的那样被解析。
您添加了一个空格来分隔两个 LDAP 主机,如 文档所示,但也许您应该按照 AuthCore 模块示例中的建议创建两个别名:
<AuthnProviderAlias ldap LDAP-region-A>
AuthLDAPBindDN "CN=SVC_APIACCESS,OU=Service Accounts,OU=ACCOUNTS,OU=BEHEER,DC=example,DC=org"
AuthLDAPBindPassword <password>
AuthLDAPURL "ldap://1.2.3.4/OU=ACCOUNTS,OU=APPS,DC=ont,DC=example,DC=org?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>
<AuthnProviderAlias ldap LDAP-region-B>
AuthLDAPBindDN "CN=SVC_APIACCESS,OU=Service Accounts,OU=ACCOUNTS,OU=BEHEER,DC=example,DC=org"
AuthLDAPBindPassword <password>
AuthLDAPURL "ldap://6.7.8.9/OU=ACCOUNTS,OU=APPS,DC=ont,DC=example,DC=org?sAMAccountName?sub?(objectClass=*)"
</AuthnProviderAlias>