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

Заставить Sympa аутентифицировать пользователей с другой базой данных и структурой таблиц

Мы хотели бы интегрировать веб-интерфейс Sympa с другой системой, использующей MySQL, используя таблицу пользователей других систем.

Я провел некоторый поиск, но поскольку Sympa плохо документирована, никаких релевантных результатов не обнаружено.

Это возможно?

Аутентификация Sympa настраивается auth.conf файл. Он может содержать одну или несколько строф, определяющих альтернативные методы аутентификации, такие как внутренняя база данных, LDAP, cas или generic_sso. Sysmpa идентифицирует пользователей по их адресу электронной почты.

Первые два (внутренний и LDAP) принимают адрес электронной почты и пароль пользователя и проходят прямую аутентификацию. Аутентификация CAS использует службу CAS.

Аутентификация Generic_sso использует собственную аутентификацию веб-сервера для возврата идентификатора пользователя, а затем получает адрес электронной почты пользователя либо из метаданных, либо через поиск LDAP. Одним из примеров может быть использование Shibboleth (через mod_shib) и извлечение адреса электронной почты из метаданных Shibboleth. Однако может использоваться любая аутентификация веб-сервера, поэтому вы можете легко использовать mod_mysql или аналогичный для аутентификации во внешней базе данных пользователей. Чтобы получить адрес электронной почты, вы можете либо использовать связанный поиск LDAP, либо заставить модуль аутентификации веб-сервера возвращать метаданные (в виде заголовка HTTP), либо убедиться, что аутентифицированный идентификатор пользователя совпадает с адресом электронной почты.

Коротко; используйте generic_sso, а затем настройте необходимую аутентификацию на своем веб-сервере, не забудьте вернуть адрес электронной почты в метаданных, если вы не можете сопоставить пользователя с электронной почтой через поиск LDAP.

Документация (правда, плохая) по этому поводу находится здесь: Sympa аутентификация

Пример: это auth.conf строфа использует mod_shib для аутентификации через Shibboleth; если mail метаданные будут возвращены, тогда они будут использованы, в противном случае будет выполнен поиск LDAP для получения адреса электронной почты. Чтобы аутентификация работала, местоположение /sympa/sso_login/shibboleth настроен на веб-сервере для защиты Shibboleth с использованием mod_shib.

 generic_sso    
   service_name       Shibboleth    
   service_id         shibboleth
   http_header_list   mail,displayName,uid,unscoped_affiliation    
   netid_http_header  uid
   email_http_header  mail
         ldap_host       ldap.company.com:636
         ldap_timeout    20
         ldap_bind_dn        cn=sympa,o=company
         ldap_bind_password  xxxxxx
         ldap_suffix     ou=users,o=company
         ldap_get_email_by_uid_filter (cn=[uid])
         ldap_email_attribute mail
         ldap_scope      one
         ldap_use_ssl    1

Пример: Аналогичный метод можно использовать для защиты местоположения с помощью другого метода, например mod_auth_mysql или mod_authn_dbd. Если вы используете mod_authn_dbd, вы можете вернуть адрес электронной почты в том же запросе, откуда он будет загружен в среду. Затем вы можете использовать RequestHeader set в вашей конфигурации Apache, чтобы вставить его в заголовки HTTP, чтобы их email_http_header определение. Видеть Вот для mod_authn_dbd документация.

 generic_sso    
   service_name       MySQL    
   service_id         mysql
   email_http_header  x-mail

и в Apache (это не проверено, но должно быть правильным):

DBDriver mysql
DBDParams "dbname=apacheauth user=apache password=xxxxxx"
DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300
<Location /sympa/sso_login/mysql>
    AuthType basic
    AuthBasicProvider dbd
    Require valid-user
    AuthDBDUserPWQuery "SELECT password, emailaddr FROM authn WHERE user = %s"
    RequestHeader set x-mail %{AUTHENTICATE_emailaddr}e
</Location>