Единый вход в Moodle с внешней формой входа

Я разрабатываю сайт Moodle, где я должен использовать внешний сервис для аутентификации пользователей. Эта служба единого входа должна быть единственной формой аутентификации.

Поставщик внешнего сервиса требует, чтобы я использовал их форму входа на своем сервере, поэтому мне нужно отключить форму входа в систему Moodle.

Я посмотрел на различные плагины аутентификации, но ни один из них, кажется, не делает именно то, что мне нужно.

Пока я думаю, что это то, что я собираюсь сделать:

  1. Измените файл login / index.php, чтобы он не перенаправлял пользователя к внешней форме входа.
  2. Служба единого входа возвращается на новую страницу на моем сервере Moodle, которая подтверждает предоставленные учетные данные.
  3. Все соответствующие пользовательские данные собираются из веб-службы SOAP, подключенной к службе SSO.
  4. Если (уникальное) имя пользователя, предоставленное службой единого входа, существует в таблице mdl_users, строка обновляется соответствующими пользовательскими данными.
  5. Если имя пользователя не существует, новый пользователь генерируется автоматически
    Затем пользователь заходит на сайт Moodle и направляется на его первую страницу.

Я впервые работаю с Moodle, поэтому у меня есть несколько вопросов:

  1. Как я могу автоматически создать нового пользователя? Достаточно ли просто добавить новую запись в mdl_users?
  2. Как мне войти в систему?
  3. Могу ли я сделать такую ​​функциональность в качестве плагина для аутентификации или мне нужно взломать файл login / index.php?
  4. Как отключить ненужные части собственного управления пользователями в Moodle (например, сброс пароля, поля информации о пользователе, полученные из службы SOAP и т. Д.)?

Я очень надеюсь, что вы можете помочь мне 🙂

3

Решение

  1. Вызовите create_user_record () (строка 4008 из lib / moodlelib.php в главной ветке). Это делает вставку в mdl_user, но также выполняет кучу проверок и вызывает другие функции, чтобы заботиться о зависимостях, триггерах событий и так далее. Эта функция вызывается автоматически authenticate_user_login () (см. Ниже), если аутентифицируемый пользователь еще не существует.
  2. Это включает вызов authenticate_user_login () (строка 4378 из lib / moodlelib.php), за которым следует complete_user_login () (строка 4577 из lib / moodlelib.php).
  3. Все это может быть достигнуто путем создания плагина аутентификации, и вы сможете найти все, что вам нужно знать на https://docs.moodle.org/dev/Authentication_plugins, включая ссылки на пример кода и предлагаемый шаблон.
  4. Вы можете заблокировать поля профиля пользователя через свой плагин auth, и вы можете фактически установить страницу сброса настраиваемого / внешнего пароля через интерфейс администратора по адресу /admin/settings.php?section=manageauths.

Надеюсь это поможет.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]