我在多域环境中实施了一个内部网 CMS (Joomla 2.5),使用 kerberos 针对 Windows AD -> SSO 进行登录。使用 kerberos 的 SSO 非常适合集成域,对于 CMS 的 SSO 也是如此。我的问题:大约 10% 的用户不在任何域中(主要是销售内容...),因此他们无法使用 kerberos 针对 Windows AD 进行身份验证。但我们也希望为这些用户提供对内部网的访问权限,即使他们无法登录 CMS。我的问题是:有没有办法将这些用户重定向到 CMS 目录作为后备?
我的 apache 配置到目前为止:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName intranet.company.local
DocumentRoot /opt/joomla/jupgrade
<Directory /opt/joomla/jupgrade>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
AuthType Kerberos
AuthName "Intranet Login"
KrbMethodNegotiate On
KrbMethodK5Passwd Off
KrbAuthRealms DOMAIN1 DOMAIN2 DOMAIN3 DOMAIN4 DOMAIN5
KrbServiceName HTTP
Krb5KeyTab /etc/apache2/kerberos_myserver_combined.keytab
require valid-user
#ErrorDocument 401 /noauth/401.hmtl
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
无法将这些用户加入到其中一个域中。有一个项目正在运行单域解决方案,但这需要一些时间。Ubuntu 12.04 和 Apache 2.2 作为 Web 服务器环境。
提前感谢任何建议!
答案1
您可以使用自定义错误响应将未经授权的用户重定向到另一个 URL 或另一个目录:
ErrorDocument 401 http://intranet.com/
ErrorDocument 401 /intranet.com/login.html
答案2
经过更多的搜索和尝试错误,我认为解决方案的最佳提示在这里:https://stackoverflow.com/questions/1726860/apache-authentication-redirect-on-failure-reliably
看来,Apache 版本越高,捕获 401 的可能性就越大。