FastComments.com Blog

Mon Apr 13 2020
...

Настройка SSO с FastComments

Обзор

Что такое SSO?

SSO, или единый вход, - это набор соглашений, используемых для того, чтобы вы или ваши пользователи могли использовать FastComments без необходимости создания другой учетной записи.

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

Как получить его?

Все типы учетных записей в настоящее время получают доступ к SSO, а также поддержку. Тем не менее, максимальное количество пользователей SSO будет варьироваться в зависимости от вашего пакета.

Пользователи WordPress

Если вы используете наш плагин WordPress, то писать код не нужно! Просто перейдите на страницу администратора плагина, нажмите на настройки SSO, а затем включите.

Это приведет вас к мастеру с одной кнопкой, который создаст ваш API-ключ, отправит его на вашу установку WordPress и включит SSO. Мы объединили это в одно нажатие кнопки для вас.

Обратите внимание, что если вы устанавливаете плагин в первый раз, вам нужно будет завершить процесс настройки, прежде чем вы увидите страницу администратора с кнопкой настроек SSO.

Пользовательские интеграции

FastComments SSO использует шифрование HMAC-SHA256 в качестве механизма для реализации SSO. Сначала мы рассмотрим общую архитектуру, приведем примеры и подробные шаги. Однако в конце этой статьи есть инструкции по миграции с Disqus и Commento.

Поток выглядит следующим образом:

Схема SSO FastComments

Вам не нужно писать новые конечные точки API с FastComments SSO. Просто зашифруйте информацию пользователя, используя ваш секретный ключ, и передайте полезную нагрузку в виджет комментариев.

Мы предоставляем полностью функциональные примеры кода на нескольких языках/средах, включая NodeJS, Java/Spring и "чистый" PHP. Хотя мы используем ExpressJS в примере NodeJS и Spring в примере Java, в этих средах нет необходимых фреймворков/библиотек для реализации FastComments SSO - работают нативные криптопакеты.

Вы можете найти репозиторий с примерами кода здесь:

Примеры кода FastComments SSO

Получите свой секретный API-ключ

Ваш секретный API-ключ можно получить на этой странице. Вы также можете найти эту страницу, перейдя в Мой аккаунт, нажав на плитку API/SSO и затем нажав "Получить секретный API-ключ".

Параметры виджета комментариев

Документацию по высокоуровневому API для виджета комментариев можно найти здесь и нажав "Показать расширенные параметры". Найдите SSO на странице.

Давайте подробнее рассмотрим, что означают эти параметры.

Виджет комментариев принимает объект конфигурации - вы уже передаете это, если используете FastComments для передачи вашего идентификатора клиента (называемого tenantId).

Чтобы включить SSO, передайте новый объект "sso", который должен содержать следующие параметры. Значения должны быть сгенерированы на сервере.

  • userDataJSONBase64: Данные пользователя в формате JSON, которые затем кодируются в Base64.
  • verificationHash: Хэш HMAC-SHA256, созданный из UNIX_TIME + userDataJSONBase64.
  • timestamp: Текущее время в формате unix. Не должно быть в будущем и не более чем на три часа в прошлом.
  • loginURL: URL, который виджет комментариев может показать для входа пользователя.
  • logoutURL: URL, который виджет комментариев может показать для выхода пользователя.
  • loginCallback: При предоставлении вместо URL для входа функция, которую виджет комментариев вызовет при нажатии кнопки входа.
  • logoutCallback: При предоставлении вместо URL для выхода функция, которую виджет комментариев вызовет при нажатии кнопки выхода.

Объект пользователя

Объект пользователя содержит следующую схему:

  • id (строка, обязательный) (максимум 1k символов)
  • email (строка, обязательный) (максимум 1k символов). Примечание: Должен быть уникальным.
  • username (строка, обязательный) (максимум 1k символов). Примечание: Имя пользователя не может быть адресом электронной почты. Не обязательно должно быть уникальным.
  • avatar (строка, необязательный) (максимум 3k символов)
  • optedInNotifications (логическое, необязательный)
  • displayLabel (строка, необязательный, максимум 100 символов). Эта метка будет отображаться рядом с их именем.
  • websiteUrl (строка, необязательный, максимум 2000 символов). Имя пользователя будет ссылаться на это.

Уведомления

Чтобы включить или отключить уведомления, установите значение optedInNotifications в true или false соответственно. В первый раз, когда пользователь загрузит страницу с этим значением в полезной нагрузке SSO, настройки их уведомлений будут обновлены.

VIP-пользователи и специальные метки

Вы можете отображать специальную метку рядом с именем пользователя, используя необязательное поле "displayLabel".

Неаутентифицированные пользователи

Чтобы представить неаутентифицированного пользователя, просто не заполняйте userDataJSONBase64, verificationHash или timestamp. Предоставьте loginURL.

Прямые примеры сереализации и хеширования данных пользователя

Более подробную информацию примеры здесь (js), здесь (java) и здесь (php).

Миграция с Disqus SSO

Наибольшие различия между Disqus и FastComments SSO заключаются в том, что Disqus использует SHA1 для шифрования, в то время как мы используем SHA256. Это означает, что миграция с Disqus проста - измените алгоритм хеширования с SHA1 на SHA256 и обновите имена свойств, передаваемые в интерфейс.

Миграция с Commento SSO

Commento использует совершенно другой подход к SSO - они требуют, чтобы у вас была конечная точка, которую они вызывают для аутентификации пользователя. FastComments работает наоборот - просто закодируйте и хешируйте информацию пользователя, используя ваш секретный ключ, и передайте ее дальше.

Мы понимаем, что любая интеграция может быть сложным и болезненным процессом. Не стесняйтесь обращаться к вашему представителю или использовать страницу поддержки.