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