Передача учетных данных между сайтами - PullRequest
5 голосов
/ 09 декабря 2008

У меня два разных сайта на двух разных серверах с двумя разными доменами. Один сайт работает под управлением Joomla, другой - Moodle. Я настроил сервер Moodle так, чтобы его аутентификация основывалась на таблице пользователей на сайте Joomla, поэтому у нас есть авторитетный источник информации о пользователях.

Что я хотел бы сделать, так это: после того, как кто-то войдет в систему на сайте Joomla, предоставьте ссылку на сайт Moodle, который будет автоматически входить в систему, что-то вроде фальсификации решения с единым входом. Пароли в Joomla - это MD5, и у каждого есть своя секретная соль.

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

Я рассматривал вопрос об изменении модуля аутентификации в Moodle, чтобы, если представленный пароль соответствовал определенным критериям (например, это 32 шестнадцатеричных символа), то не MD5 его перед сравнением с версией Joomla - проблема с этим чтобы любой мог (после обнаружения зашифрованного пароля) затем использовать это для входа в систему. Мне нужен какой-то особый способ отправки зашифрованного пароля из Joomla в Moodle и подачи сигнала в Moodle для обработки этого запроса на вход в систему по-другому.

Есть мысли?

Ответы [ 3 ]

4 голосов
/ 09 декабря 2008

Для решения Secure Single-Sign-One вы можете сделать следующее:

  • Создание случайного (с PRNG) токена для пользователя Joomla (сохраните это)
  • Отправьте этот токен внутренне (через веб-сервис и т. Д., - сохраните его через HTTPS- или локальный источник данных) в Moodle
  • При отправке этого токена вы также должны сообщить Moodle об идентификаторе пользователя, которому принадлежит токен (поэтому отправьте токен + идентификатор пользователя)
  • Сохраните этот токен + ИД пользователя в Moodle
  • Создайте ссылку с этим токеном в Joomla с этим токеном (вы можете использовать строку запроса, как только срок действия токена истекает после первого использования, но лучше использовать POST)
  • Когда вы видите этот токен в Moodle, войдите в систему соответствующего пользователя и истекайте срок действия токена (чтобы он был безопасен от ответных атак и т. Д.)
1 голос
/ 02 мая 2009

Не могли бы вы использовать Pro Moodle (http://www.promoodle.com/) или JFusion (http://www.jfusion.org/)), которые оба предлагают создать систему единого входа в систему Joomla / Moodle.

Здесь также находится руководство: http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf на "мост между Moodle и Joomla.

Здесь приведено руководство по изменению кода Moodle для создания системы единого входа: http://moodle.org/mod/forum/discuss.php?d=45126#211486 (используйте с осторожностью!).

Ваш учет может варьироваться при использовании этих решений в разных доменах.

0 голосов
/ 09 декабря 2008

Если вы используете Joomla! 1.5, не забывайте пользовательские плагины. Посмотрите на plugins / user / example.php. Вы можете получить пароль во время события onLoginUser, которое может помочь вам соединить системы.

...