Всем привет,
Наконец-то я интегрировал свой сайт Discourse с Shibboleth. Это было просто… как только я во всём разобрался
.
-
Настройте Shibboleth на одном веб-сервере (не обязательно том же, что и сервер Discourse). Назовём его
shib.univ.edu. -
Создайте на
shib.univ.eduдиректорию для реализации SSO для Discourse. Назовём еёdiscourse-sso. -
Защитите эту директорию с помощью Shibboleth. Если вы используете Apache, это обычно означает добавление следующего в файл
discourse-sso/.htaccess:# Заголовок Shibboleth AuthType Shibboleth ShibRequireSession On ShibApplicationId default ShibExportAssertion On require shib-user ~ ^.+@univ\.edu$ -
Подключите библиотеку, выполняющую работу по подписанию, описанную в [официальном руководстве Discourse SSO]. Я использую cviebrock/discourse-php. Создайте здесь файл
sso.php, скопировав его согласно инструкциям по использованию. -
Ваши
usernameиemailбудут доступны в переменной окруженияeppn. Таким образом, если вы следовали инструкциям по использованию, описанным в cviebrock/discourse-php (ссылка выше), вам достаточно установить:// Вставьте сюда ваш код аутентификации пользователя ... // Обязательно и должно быть согласовано с вашим приложением $userEmail = getenv( 'eppn' ); // Обязательно и должно быть уникальным для вашего приложения $userId = strstr( $userEmail, '@', true ); -
Включите SSO согласно официальному руководству Discourse SSO. Укажите ваш
sso urlкакhttps://shib.univ.edu/discourse-sso/sso.php, и всё должно заработать.
С уважением,
GI