LDAP Auth 代理根据 LDAP 组添加标头

LDAP Auth 代理根据 LDAP 组添加标头

我正在尝试设置一些 WebSSO 机制,允许我的客户根据内部 Active Directory 对人员进行身份验证,然后添加包含凭据信息的安全(https)标头。

版本 1 OK:验证并添加标题

第一个版本“相当”简单。我使用 Apache 和 mod_auth_kerb 进行身份验证,然后添加标头。以下配置是现有配置的 kinsnippet。

<VirtualHost  *:80>
    ServerName external-sso.corp.fr
    RewriteEngine On
</VirtualHost>

<location /app2> 
    # Authentication
    AuthType Kerberos
    AuthName "Active Directory Authentication"
    KrbMethodNegotiate On
    KrbMethodK5Passwd On
    KrbLocalUserMapping On
    KrbAuthRealms CORP.REALM.FR
    Krb5KeyTab /etc/krb5/http-myserver.corp.realm.fr.keytab
    Require valid-user

    # Identification
    AuthLDAPURL "ldaps://corp.realm.fr:636/DC=realm,DC=corp,DC=fr?sAMAccountName?sub?(objectClass=*)"
    AuthLDAPBindDN "CN=App2,OU=cloud,OU=prod,OU=Authentication,DC=realm,DC=corp,DC=fr"
    AuthLDAPBindPassword "*******"
    AuthLDAPGroupAttributeIsDN on
    Require valid-user

    # Adding Information into headers
    RewriteCond %{REMOTE_USER} (.+)
    RewriteRule .* - [E=RU:%{REMOTE_USER}]
    RequestHeader set X-App2-Remote-User %{RU}e
</location>

版本 2 不知道!:根据组进行身份验证并添加标题

在下一个版本中,我想仅当用户属于某个组时才添加特定的标题,例如,如果允许访问 APP2,则添加用户帐户名,如果不允许,则添加通用帐户。

我不知道如何实现这一点,甚至创建了两个不同的虚拟主机......,即使有可能。

您能给我一些提示吗?请随时提供建议,即使我知道:

  • Active Directoryoy 已经具有带有 AD/AM 的 web-sso 机制
  • 添加标头实际上并不安全(无论在这里,使用 HTTPS 和 IP 过滤)
  • 我确实需要一个完整的 web-sso(我们实际上正在比较 Shibboleth、AD/AM 和其他解决方案,但没有时间等待:)...你知道,生意就是生意!

答案1

需要组而不是需要用户帮助?

另请参阅这个问题关于嵌套组枚举。

Require ldap-filter memberof:1.2.840.113556.1.4.1941:=CN=Access to Apache,OU=My Organization Unit,DC=company,DC=com

答案2

由于您使用的是 LDAP,因此可以避免使用 mod_rewrite。虽然设置:

AuthLDAPRemoteUserAttribute sAMAccountName

对我来说,Apache-2.4 没有影响——与文档—— 真正起作用的是%{AUTHENTICATE_sAMAccountName}e。例如:

RequestHeader  set X-App2-Remote-User %{AUTHENTICATE_sAMAccountName}e

请注意,需要在末尾AuthLDAPURL包含由 mod_ldap 在环境中创建的。您的示例中已经有了它。?sAMAccountNameAUTHENTICATE_sAMAccountName

答案3

我最终通过修改提出问题的方式解决了我的问题。

我设法让第一个应用程序(app1)调用两个不同的应用程序上下文(例如/app2-anonymous 和/app2-nameduser)。

但我仍在寻找更好的答案,即使我的解决方案似乎是“Apache HTTP 方式”。

相关内容