Shibboleth SSO с Discourse

Всем привет,

Наконец-то я интегрировал свой сайт Discourse с Shibboleth. Это было просто… как только я во всём разобрался :joy:.

  1. Настройте Shibboleth на одном веб-сервере (не обязательно том же, что и сервер Discourse). Назовём его shib.univ.edu.

  2. Создайте на shib.univ.edu директорию для реализации SSO для Discourse. Назовём её discourse-sso.

  3. Защитите эту директорию с помощью Shibboleth. Если вы используете Apache, это обычно означает добавление следующего в файл discourse-sso/.htaccess:

     # Заголовок Shibboleth
     AuthType Shibboleth
     ShibRequireSession On
     ShibApplicationId default
     ShibExportAssertion On
    
     require shib-user ~ ^.+@univ\.edu$
    
  4. Подключите библиотеку, выполняющую работу по подписанию, описанную в [официальном руководстве Discourse SSO]. Я использую cviebrock/discourse-php. Создайте здесь файл sso.php, скопировав его согласно инструкциям по использованию.

  5. Ваши username и email будут доступны в переменной окружения eppn. Таким образом, если вы следовали инструкциям по использованию, описанным в cviebrock/discourse-php (ссылка выше), вам достаточно установить:

     // Вставьте сюда ваш код аутентификации пользователя ...
     // Обязательно и должно быть согласовано с вашим приложением
     $userEmail = getenv( 'eppn' );
    
     // Обязательно и должно быть уникальным для вашего приложения
     $userId = strstr( $userEmail, '@', true );
    
  6. Включите SSO согласно официальному руководству Discourse SSO. Укажите ваш sso url как https://shib.univ.edu/discourse-sso/sso.php, и всё должно заработать.

С уважением,
GI

7 лайков