Мы хотели бы интегрировать веб-интерфейс 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>