我在尝试让用户使用 mod____auth____ldap 向 apache 进行身份验证时遇到了问题。我希望用户使用表单进行身份验证,而不是使用 apache 通常显示的默认对话框。
服务器“托管”了许多应用程序。如果用户尝试在未通过 Apache 身份验证的情况下访问这些应用程序,我希望服务器重定向到登录页面。
登录页面当前位于服务器的 DocumentRoot 中,并且每个应用程序在其自己的目录中都通过别名引用,因为登录应用程序使用 mod_rewrite 作为 URL。例如
Alias /someapp "/opt/applications/someapp/"
<Directory "/opt/applications/someapp">
AuthName "Login"
AuthBasicProvider ldap
AuthType Basic
AuthLDAPUrl ldap://ldapserver:389/dc=somedomain,dc=com?cn
AuthLDAPBindDN cn=Manager,dc=somedomain,dc=com
AuthLDAPBindPassword somepassword
AuthzLDAPAuthoritative off
require valid-user
</Directory>
登录应用程序正在针对服务器使用基本身份验证,因此据我了解,这应该允许被授权访问使用 mod____auth____ldap 限制的其他应用程序的用户??
目前 DocumentRoot 目前没有任何 auth_ldap 限制。
我如何强制登录页面针对 apache 进行身份验证,以便用户可以访问其他应用程序?
谢谢...
答案1
Apache 将不是能够显示登录页面默认情况下。当您执行基本的身份验证,它所做的就是发送401将状态代码返回给浏览器,弹出用户名/密码对话框。任何类型的登录页面都必须在应用程序端进行身份验证处理。
或者,你可能需要看看身份验证联合系统如口号或者simplesamlphp。设置它可能很麻烦,但一旦完成,它就会完全按照您的意愿运行。
它会:
- 允许您通过指定 shibboleth 作为身份验证机制来保护 Apache 中的任何站点。它会加载 mod_shib apache mod 来处理前端过滤。
- 它将向用户提供可定制的登录页面
- 您可以配置后端以根据 LDAP 进行身份验证。
希望这可以帮助。