Заставьте 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>