LDAP Auth прокси, добавляющий заголовки в соответствии с группами LDAP

Я пытаюсь настроить некоторые механизмы WebSSO, которые позволяют моему клиенту аутентифицировать людей по внутренней Active Directory, а затем добавлять безопасные (https) заголовки, содержащие информацию о полномочиях.

Версия 1 ОК: аутентификация и добавление заголовков

Первая версия "довольно" проста. Я использую Apache и mod_auth_kerb для аутентификации, а затем добавляю заголовки. Следующая конфигурация является родственной существующей.

<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 Directoy уже есть механизмы web-sso с AD/AM
  • Добавление заголовков в действительности не защищено (независимо от того, используется ли здесь HTTPS и IP-фильтрация)
  • Мне действительно нужен полноценный веб-сайт (мы на самом деле сравниваем Shibboleth, AD/AM и другие решения, но у нас нет времени ждать:) ... вы знаете, бизнес есть бизнес!

3 ответа

Поскольку вы используете LDAP, вы можете избежать mod_rewrite. Хоть настройка:

AuthLDAPRemoteUserAttribute sAMAccountName

не имел никакого эффекта для меня с Apache-2.4 - вопреки документации - что работало, было %{AUTHENTICATE_sAMAccountName}e, Например:

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

Обратите внимание, что AuthLDAPURL должен содержать ?sAMAccountName в конце для AUTHENTICATE_sAMAccountName быть созданным в среде mod_ldap. У вас уже есть это в вашем примере.

Требуется ли группа вместо помощи пользователя?

Также посмотрите этот вопрос о перечислении вложенных групп.

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

Я наконец решил свою проблему, изменив способ, которым я дал проблему.

Мне удалось иметь 2 разных контекста приложения (например, /app2-anonymous и /app2-nameduser), вызываемых первым приложением (app1).

Но я все еще ищу лучший ответ, даже если кажется, что мое решение - "путь Apache HTTP".

Другие вопросы по тегам