LDAPvalidation代理根据LDAP组添加标头

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

版本1确定:validation并添加标题

第一个版本“非常”简单。 我正在使用Apache和mod_auth_kerb来validation,然后添加标题。 以下configuration是现有的一个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不知道! :根据组进行validation和添加标题

进入下一个版本,我想添加特定的头只有当用户属于一个组,例如用户帐户名称,如果他被允许访问APP2,通用账户,如果没有。

即使有可能, 我也不知道如何做到这一点,甚至创造两个不同的虚拟主机

你能给我一些提示吗? 不要犹豫,添加build议,即使我知道:

  • Active Directoy已经有AD / AM的web-sso机制
  • 添加头文件并不真正安全(不pipe这里,使用HTTPS和IP过滤)
  • 我真的需要一个完整的web-sso(我们实际上是比较Shibboleth,AD / AM和其他解决scheme,但没有时间等待:) …你知道,生意就是生意!

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

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

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

既然你正在使用LDAP,你可以避免mod_rewrite。 虽然设置:

 AuthLDAPRemoteUserAttribute sAMAccountName 

对Apache-2.4没有影响 – 与文档相反 – 工作的是%{AUTHENTICATE_sAMAccountName}e 。 例如:

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

请注意, AuthLDAPURL需要在末尾包含?sAMAccountName ,以便在mod_ldap环境中创buildAUTHENTICATE_sAMAccountName 。 你已经有了你的例子。

我终于解决了我的问题,修改了我提出问题的方式。

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

但是我仍然在寻找更好的答案,即使看起来我的解决scheme是“Apache HTTP方式”。