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.
Процес виглядає так:
Вам не потрібно писати нові API кінцеві точки з FastComments SSO. Просто зашифруйте інформацію користувача, використовуючи свій секретний ключ, і передайте навантаження до віджета коментування.
Ми пропонуємо повнофункціональні приклади коду на кількох мовах/середовищах, включаючи NodeJS, Java/Spring та звичайний PHP. Хоча в прикладі на NodeJS ми використовуємо ExpressJS, а в прикладі на Java - Spring, в цих середовищах не потрібні фреймворки/бібліотеки для реалізації FastComments SSO - працюють вбудовані пакети шифрування.
Ви можете знайти репозиторій з прикладами коду тут:
Приклади коду SSO FastComments
Отримайте свій API секретний ключ
Ваш API секретний ключ можна отримати з цієї сторінки. Ви також можете знайти цю сторінку, перейшовши до Мого облікового запису, натиснувши на плитку API/SSO, а потім натиснувши "Отримати секретний ключ API".
Параметри віджета коментування
Високорівнева документація API для віджета коментування доступна тут, де потрібно натиснути "Показати розширені налаштування". Шукайте SSO на сторінці.
Давайте більш детально розглянемо, що означають ці параметри.
Віджет коментування приймає об'єкт конфігурації - ви вже передаєте його, якщо використовуєте FastComments для передачі вашого ідентифікатора клієнта (який називається tenantId).
Щоб увімкнути SSO, передайте новий об'єкт "sso", який повинен містити наступні параметри. Значення повинні бути згенеровані на стороні сервера.
- userDataJSONBase64: Дані користувача у форматі JSON, які потім кодуються у Base64.
- verificationHash: Хеш HMAC-SHA256, створений з UNIX_TIME + userDataJSONBase64.
- timestamp: Поточний юнікс-час. Не повинен бути в майбутньому або більше трьох годин у минулому.
- loginURL: URL, який віджет коментування може показати для входу користувача.
- logoutURL: URL, який віджет коментування може показати для виходу користувача.
- loginCallback: Якщо надано замість URL для входу, функція, яку віджет коментування викликає при натисканні кнопки входу.
- logoutCallback: Якщо надано замість URL для виходу, функція, яку віджет коментування викликає при натисканні кнопки виходу.
Об'єкт User
Об'єкт User містить наступну схему:
- id (рядок, обов'язковий) (макс. 1к символів)
- email (рядок, обов'язковий) (макс. 1к символів). Примітка: повинен бути унікальним.
- username (рядок, обов'язковий) (макс. 1к символів). Примітка: ім'я користувача не може бути електронною поштою. Не обов'язково бути унікальним.
- avatar (рядок, необов'язковий) (макс. 3к символів)
- optedInNotifications (логічне, необов'язкове)
- displayLabel (рядок, необов'язковий, макс. 100 символів). Цей ярлик буде показаний поряд з їхнім іменем.
- websiteUrl (рядок, необов'язковий, макс. 2000 символів). Ім'я користувача буде посилатися на цей URL.
Сповіщення
Щоб увімкнути або вимкнути сповіщення, встановіть значення 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 є протилежним - просто кодуйте та хешуйте інформацію користувача, використовуючи свій секретний ключ, і передайте її далі.
Ми розуміємо, що будь-яка інтеграція може бути складним і болісним процесом. Не соромтеся звертатися до свого представника або скористатися сторінкою підтримки.
