AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1441725
Accepted
spiderpigloki
spiderpigloki
Asked: 2019-05-28 05:10:17 +0800 CST2019-05-28 05:10:17 +0800 CST 2019-05-28 05:10:17 +0800 CST

使用 Apache 和 LDAP 重定向用户

  • 772

在工作中,我们遇到了一个问题,即当用户访问通过 Apache2 管理的 URL 时,我们希望根据他们是否是特定 LDAP 组的成员来重定向用户。

有以下三种情况:

  • 用户提供有效的凭据和 LDAP 组的 IS 成员 => 重定向到应用程序 ABC(有效)
  • 用户提供了有效的凭据,但不是 LDAP 组的成员 => 重定向到 Maintenance-Page(不起作用,这是问题所在)
  • 用户提供无效信用或点击取消 => 重定向到维护(工作)

我们的问题是:如果用户有效且不是 LDAP 组“THE-GROUP”的成员,我们如何重定向用户?

现在,除非您单击取消或“THE-GROUP”的成员,否则输入凭据的覆盖层会无限显示。

我们的应用程序 ABC 托管在我们的场所,在 Ubuntu 上运行。我们的反向代理是在 Ubuntu 16.04 上运行的 Apache 2.4.18-2ubuntu3.10。客户将使用来自世界各地的各种浏览器和操作系统,因此按 IP 过滤不是一种选择。反向代理位于我们的 DMZ 中,而 App-Server 位于外部。创建了 NAT 规则,以便两个系统都可以通过 8080(运行 ABC 的端口)进行通信。

我们的(测试)配置如下所示:

<VirtualHost *:443>
    ServerName testabc.company.com

    SSLProxyEngine On
    SSLEngine On
    SSLCertificateKeyFile  /etc/ssl/private/our_company.key
    SSLCertificateFile /etc/ssl/certs/company_com/fullchain.cer


    ErrorLog ${APACHE_LOG_DIR}/LDAP_test_error.log
    CustomLog ${APACHE_LOG_DIR}/LDAP_test_access.log combined

    # error document shown to unauthorized users
    DocumentRoot /var/www/Maintenance_Page
    ErrorDocument 401 /TTT/index.html

        <Location />
            ProxyPass http://internal-vm-name:8080/
            ProxyPassReverse http://internal-vm-name:8080/
        </Location>

    # the following block applies to all proxied content
    <Proxy "*">
        AuthType Basic
        AuthBasicProvider ldap
        AuthUserFile /dev/null
        AuthName "Auth with our LDAP Server"

        # configuration of the mod_authnz_ldap module
        AuthLDAPURL "ldap://SOMETHING"
        AuthLDAPBindDN "FOO,BAR "
        AuthLDAPBindPassword "FOOBAR"

        # Only users belonging to group THE-GROUP can access ABC,
        # all others will see the error document specified above.
        Require ldap-group CN=THE-GROUP,OU=Company,DC=ad,DC=Company,DC=com
    </Proxy>
</VirtualHost>

# virtual host required to access images and style-sheets from the error document
<VirtualHost *:80>
    ServerName maintenance.company.com
    DocumentRoot /var/www/Maintenance_Page

    ErrorLog ${APACHE_LOG_DIR}/maintenance -error.log
    CustomLog ${APACHE_LOG_DIR}/maintenance.log combined
</VirtualHost>

# redirection from HTTP to HTTPS
<VirtualHost *:80>
    ServerName abc.company.com
    Redirect Permanent /  https://abc.company.com/
    Redirect /  https://abc.company.com/
</VirtualHost>
apache-http-server ldap
  • 1 1 个回答
  • 965 Views

1 个回答

  • Voted
  1. Best Answer
    ixs
    2019-05-28T09:59:01+08:002019-05-28T09:59:01+08:00

    您的问题没有好的解决方案。您正在使用 HTTP Basic Auth,这意味着浏览器正在尝试打开页面,正在获取 401 状态并发送 WWW-Authenticate: Basic realm="Whatever" 标头。

    此时浏览器显示身份验证对话框,一旦输入用户名和密码,它们就会发送到 Authorization 标头内的网络服务器。

    如果服务器拒绝请求,它将再次发送带有 WWW-Authenticate 标头的 401 状态。浏览器将无限次地弹出对话框。服务器在任何时候都不能说密码被永久拒绝。

    如果您使用的是 mod_dbd 支持的数据库,则可以使用 mod_rewrite 为组执行 SQL 查询并相应地重定向。我不相信 LDAP Auth 处理程序可以做到这一点。

    • 0

相关问题

  • Apache 到 Nginx mod_rewrite 规则

  • 无法在本地主机中打开项目文件夹

  • Apache 两次发送 POST 请求

  • 是否可以将 Apache 配置为同一端口上的静态 Web 服务器和负载平衡器?

  • apache2 可以在没有 conf 文件的情况下工作吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve