Назад | Перейти на главную страницу

Прокси-сервер 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, в противном случае - общая учетная запись.

Я не знаю, как этого добиться, даже создав два разных хоста ..., даже если это возможно.

Не могли бы вы мне подсказать? Не стесняйтесь добавлять советы, даже я знаю, что:

Поскольку вы используете 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".