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

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

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

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

1 ответ

Проверка подлинности 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>
Другие вопросы по тегам