Mon Apr 13 2020
...
Настройка SSO с FastComments
Обзор
Что такое SSO?
SSO, или единожды подтвержденный вход, это набор соглашений, используемых для того, чтобы вы или ваши пользователи могли пользоваться FastComments, не создавая другой аккаунт.
Предполагая, что вы не позволяете анонимные комментарии, аккаунт необходим для комментирования с FastComments. Мы делаем процесс регистрации очень простым - пользователь просто оставляет свой email, когда комментирует. Однако мы понимаем, что даже это создает дополнительное трение, и некоторые сайты хотят этого избежать.
Как мне это получить?
Все типы аккаунтов в настоящее время получают доступ к SSO, а также поддержку. Однако максимальное количество пользователей SSO будет варьироваться в зависимости от вашего пакета.
Пользователи WordPress
Если вы используете наш плагин WordPress, тогда писать код не нужно! Просто перейдите на страницу администрирования плагина, нажмите на "Настройки SSO" и затем "Включить".
Это приведет вас к мастеру с одной кнопкой, который создаст ваш API-ключ, отправит его на вашу установку WordPress и включит SSO. Мы объединили это в одну кнопку для вас.
Обратите внимание, что если вы устанавливаете плагин в первый раз, вам нужно будет пройти процесс настройки, прежде чем вы увидите страницу администратора с кнопкой "Настройки SSO".
Индивидуальные интеграции
FastComments SSO использует шифрование HMAC-SHA256 как механизм для реализации SSO. Сначала мы рассмотрим общую архитектуру, приведем примеры и детализированные шаги. Однако в конце этой статьи есть инструкции по миграции с Disqus и Commento.
Процесс выглядит следующим образом:
Вам не нужно писать новые API конечные точки для FastComments SSO. Просто зашифруйте информацию пользователя, используя ваш секретный ключ, и передайте полезную нагрузку в виджет комментариев.
Мы предоставляем полностью функциональные примеры кода на нескольких языках/временных средах, включая NodeJS, Java/Spring и стандартный PHP. Хотя мы используем ExpressJS в примере NodeJS и Spring в примере Java, для реализации 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 (строка, обязательный) (максимум 1к символов)
- email (строка, обязательный) (максимум 1к символов). Примечание: Должен быть уникальным.
- username (строка, обязательный) (максимум 1к символов). Примечание: Имя пользователя не может быть email. Не обязательно должно быть уникальным.
- avatar (строка, необязательный) (максимум 3к символов)
- 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 работает наоборот - просто закодируйте и захешируйте информацию пользователя, используя ваш секретный ключ, и передайте ее.
Мы понимаем, что любая интеграция может быть сложным и болезненным процессом. Не стесняйтесь обратиться к вашему представителю или воспользуйтесь страницей поддержки.
