以下是我的情况:
- 我有一个 Web 应用程序(使用 HTTPS),需要在用户联系它之前对其进行身份验证
- 应用程序需要设置 HTTP 标头(我们将其命名为
HEADER
) - 有大约 20 个不同的 Active Directory 服务器实例
- 用户需要在其中一个 AD 服务器上进行身份验证
- 需要使用的 AD 服务器取决于用户正在使用的 IP
是否可以使用 HAProxy 执行以下操作?如果可以,我该怎么做?
- 当用户尝试联系给定的 URL 时,如果
HEADER
缺少命名的标头,则强制基本身份验证请求用户的username
和password
。 - 当收到来自用户的
username
和时password
,检查source ip
并根据其值(掩码/模式/其他)联系相应的 Active Directory 来验证用户身份 - 一旦用户通过所选 AD 服务器正确验证,则写入
HEADER
在此先感谢您的帮助!
PS,我在 Stackoverflow 上发布了同样的问题,但我猜 serverfault 可能是提出此类问题的更好的地方。
答案1
我知道这是一个有点老话题,但我想我会给出我的看法...
您可能需要考虑使用更高级的工具(例如 Keycloak + 更高级的 HTTP 网关(例如 Apache Knox))来重定向用户,并且可能使用 HAProxy 将用户指向最近的 Knox 网关。如果距离确实会产生影响,您几乎可以在 Knox、Keycloak 和 AD 实例之间建立 1 对 1 的关系,然后使用 HAProxy 根据用户的 IP 选择要连接的网关。
以下项目使用户能够将keycloak和knox连接在一起: https://github.com/UKHomeOffice/pontus-keycloak-knox