У меня есть требование, при котором я должен заменить аутентификацию пользователя по умолчанию аутентификацией центрального сервера, то есть сервера SSO.
Отладив Drupal, я узнал, что все управление сессиями происходит в includes/session.inc
файле. Я хочу сделать аутентификацию, как показано на рисунке:
СЦЕНАРИЙ: Вход в систему
Детали шагов будут:
- Замените форму входа, чтобы отправить имя пользователя и пароль на сервер единого входа ( не на Drupal , а на .NET).
- Аутентифицировать пользователя на сервере единого входа, используя базу данных этого сайта; и отправить ответ обратно на какую-то пользовательскую страницу PHP моего сайта (или форму с помощью модуля?).
- Используя ответ, определите пользователя в таблице users и создайте сеанс для этого пользователя без проверки пароля (так как это будет означать двойную аутентификацию). По умолчанию Drupal устанавливает cookie с именем
$insecure_session_name
переменной и со значением$sid
. Я хочу, чтобы Drupal не устанавливал здесь cookie, вместо этого отправлял значения переменных на сервер SSO. - Сервер единого входа примет значения, создаст cookie-файл и поместит его в основной домен
domain.com
(чтобы напомнить и то,my website
и другоеsso server
находится в поддомене основного домена, который также отсутствует в Drupal). Затем сайт drupal может войти в систему с помощью этого файла cookie.
Я знаю, что это сложный вопрос, я просто ищу указатели о том, как мне начать? как говорится "не стоит взламывать ядро". Итак, мои вопросы:
- Где я должен искать, чтобы понять, как работает аутентификация Drupal и управление сессиями?
- Есть ли способ, где я мог бы вызывать функции при
includes/session.inc
использовании хуков (поскольку в комментариях к функциям говорится «только для внутреннего использования / не подлежит изменению»)?
ПРИМЕЧАНИЕ. Я буду использовать тот же метод для регистрации пользователя, чтобы запись оставалась в центральной базе данных сервера единого входа. И во время этого введет некоторый нежелательный пароль для того же пользователя в базе данных сайта Drupal (так как пароль не будет проверяться при входе в систему).