带有 mod_auth_kerb SSO 的 apache2.2:当用户无法验证身份时如何回退到同一目录

带有 mod_auth_kerb SSO 的 apache2.2:当用户无法验证身份时如何回退到同一目录

我在多域环境中实施了一个内部网 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 的可能性就越大。

相关内容