Настройка DiscourseConnect — официальный единый вход для Discourse (sso)

DiscourseConnect — это ключевая функция Discourse, позволяющая настроить «Единый вход (SSO)» для полной делегации всей регистрации и входа пользователей из Discourse на другой сайт. Доступно для наших клиентов с тарифами Pro, Business и Enterprise.

:information_source: (Февраль 2021) «Discourse SSO» теперь называется «DiscourseConnect». Если вы используете старую версию Discourse, настройки ниже будут называться sso_..., а не discourse_connect_...

Проблема

Многие сайты, желающие интегрироваться с сайтом Discourse, хотят оставить всю регистрацию пользователей на отдельном сайте. В такой конфигурации все операции входа должны быть делегированы этому другому сайту.

Что делать, если я хочу использовать SSO вместе с существующей аутентификацией?

Идея DiscourseConnect заключается в замене аутентификации в Discourse. Если вы хотите добавить нового провайдера, обратитесь к существующим плагинам, например: Discourse VK Authentication (vkontakte)

Включение DiscourseConnect

Чтобы включить DiscourseConnect, необходимо заполнить три настройки:

enable_discourse_connect: должно быть включено, глобальный переключатель
discourse_connect_url: внешний URL, на который будут перенаправлены пользователи при попытке входа
discourse_connect_secret: секретная строка, используемая для хеширования полезной нагрузки SSO. Гарантирует подлинность полезной нагрузки.

После установки enable_discourse_connect в значение true:

  • Нажатие на кнопку входа или аватар перенаправит вас на /session/sso, который, в свою очередь, перенаправит пользователей на discourse_connect_url с подписанной полезной нагрузкой.
  • Пользователям не будет разрешено «изменять пароль». Это поле удаляется из профиля пользователя.
  • Пользователи больше не смогут использовать аутентификацию Discourse (имя пользователя/пароль, Google и т. д.).

Что делать, если вы случайно отметили эту опцию?

См.: Log back in as admin after locking yourself out with read-only mode or an invalid SSO configuration

Реализация DiscourseConnect на вашем сайте

:warning: Discourse использует адреса электронной почты для сопоставления внешних пользователей с пользователями Discourse и предполагает, что внешние адреса электронной почты защищены. ЕСЛИ ВЫ НЕ ПРОВЕРЯЕТЕ АДРЕСА ЭЛЕКТРОННОЙ ПОЧТЫ ПЕРЕД ИХ ОТПРАВКОЙ В DISCOURSE, ВАШ САЙТ БУДЕТ ЧРЕЗВЫЧАЙНО УЯЗВИМ!

В качестве альтернативы, если вы настаиваете на отправке непроверенных адресов электронной почты, УБЕДИТЕСЬ, что установлено значение require_activation=true. Это заставит Discourse проверить все адреса электронной почты. МЫ ВСЁ ЕЩЁ НАСТОЙЧИВО РЕКОМЕНДУЕМ НЕ ДЕЛАТЬ ЭТОГО, поэтому, если вы продолжите с включённой этой настройкой, вы берёте на себя значительный риск.

Discourse перенаправит клиентов на discourse_connect_url с подписанной полезной нагрузкой: (предположим, discourse_connect_url — это https://somesite.com/sso)

Вы получите входящий трафик следующего вида:

https://somesite.com/sso?sso=PAYLOAD&sig=SIG

Полезная нагрузка — это строка, закодированная в Base64, содержащая nonce и return_sso_url. Полезная нагрузка всегда является допустимой строкой запроса.

Например, если nonce равен ABCD, то raw_payload будет:

nonce=ABCD&return_sso_url=https%3A%2F%2Fdiscourse_site%2Fsession%2Fsso_login, эта исходная полезная нагрузка закодирована в Base64.

Вызываемая конечная точка должна:

  1. Проверить подпись: убедиться, что HMAC-SHA256 от PAYLOAD (с использованием discourse_connect_secret в качестве ключа) равен sig (sig будет закодирован в шестнадцатеричном формате).
  2. Выполнить необходимую аутентификацию.
  3. Создать новую полезную нагрузку, закодированную в URL, содержащую как минимум nonce, email и external_id. Вы также можете предоставить дополнительные данные; вот список всех ключей, которые понимает Discourse:
    • nonce должен быть скопирован из входной полезной нагрузки.
    • email должен быть проверенным адресом электронной почты. Если адрес электронной почты не был проверен, установите require_activation в значение «true».
    • external_id — это любая строка, уникальная для пользователя, которая никогда не изменится, даже если изменятся его адрес электронной почты, имя и т. д. Рекомендуемое значение — номер строки «id» в вашей базе данных.
    • username станет именем пользователя в Discourse, если пользователь новый или установлено значение SiteSetting.auth_overrides_username.
    • name станет полным именем в Discourse, если пользователь новый или установлено значение SiteSetting.auth_overrides_name.
    • avatar_url будет загружен и установлен как аватар пользователя, если пользователь новый или установлено значение SiteSetting.discourse_connect_overrides_avatar.
    • avatar_force_update — это булево поле. Если установлено в true, оно заставит Discourse обновить аватар пользователя, независимо от того, изменился ли avatar_url или нет.
    • bio станет содержимым биографии пользователя, если пользователь новый, его биография пуста или установлено значение SiteSetting.discourse_connect_overrides_bio.
    • title установит должность пользователя.
    • website установит веб-сайт пользователя в его профиле.
    • location установит местоположение пользователя в его профиле.
    • profile_background_url будет загружен и установлен как фон профиля пользователя, если пользователь новый или установлено значение SiteSetting.discourse_connect_overrides_profile_background.
    • card_background_url будет загружен и установлен как фон карточки пользователя, если пользователь новый или установлено значение SiteSetting.discourse_connect_overrides_card_background.
    • locale установит локаль пользователя, если пользователь новый и включено значение SiteSetting.allow_user_locale.
    • locale_force_update — это булево поле. Если установлено в true вместе с locale, оно заставит обновить локаль для существующих пользователей (требуется SiteSetting.allow_user_locale).
    • Дополнительные булевы поля («true» или «false»): admin, moderator, suppress_welcome_message, logout.
  4. Закодировать полезную нагрузку в Base64.
  5. Рассчитать хеш HMAC-SHA256 от полезной нагрузки, используя discourse_connect_secret в качестве ключа и полезную нагрузку, закодированную в Base64, в качестве текста.
  6. Перенаправить обратно на return_sso_url с параметрами запроса sso и sig (http://discourse_site/session/sso_login?sso=payload&sig=sig).

Discourse проверит, что nonce действителен, и если да, то сразу же истечёт его срок действия, чтобы его нельзя было использовать повторно. Затем он попытается:

  1. Войти пользователя, найдя уже связанный external_id в модели SingleSignOnRecord.
  2. Войти пользователя, используя предоставленный адрес электронной почты (обновляя external_id) (если require_activation = true).
  3. Создать новую учётную запись для пользователя, предоставив (email, username, name), обновляя external_id.

Вопросы безопасности

Nonce (одноразовый токен) автоматически истекает через 30 минут. Это означает, что как только пользователь будет перенаправлен на ваш сайт, у него есть 30 минут для входа или создания новой учётной записи.

Протокол защищён от атак повторного воспроизведения, так как nonce может быть использован только один раз. Nonce привязан к текущей сессии браузера для защиты от CSRF-атак.

Указание членства в группах

Если указана опция discourse connect overrides groups, Discourse будет учитывать список групп, разделённый запятыми, переданный в groups.

Помимо groups, вы также можете указать членство в группах в своей полезной нагрузке SSO, используя атрибуты add_groups и remove_groups, независимо от опции discourse connect overrides groups.

add_groups — это список названий групп, разделённый запятыми, в которых мы гарантируем, что пользователь является участником.
remove_groups — это список названий групп, разделённый запятыми, в которых мы гарантируем, что пользователь не является участником.

Референсная реализация

Discourse содержит референсную реализацию класса SSO:

Тривиальная реализация может выглядеть так:

class DiscourseSsoController < ApplicationController
  def sso
    secret = "MY_SECRET_STRING"
    sso = DiscourseApi::SingleSignOn.parse(request.query_string, secret)
    sso.email = "user@email.com"
    sso.name = "Bill Hicks"
    sso.username = "bill@hicks.com"
    sso.external_id = "123" # уникальный идентификатор для каждого пользователя вашего приложения
    sso.sso_secret = secret

    redirect_to sso.to_url("http://l.discourse/session/sso_login")
  end
end

Переход к и от единого входа.

Пока параметр require_activation не установлен в true в полезной нагрузке запроса, система доверяет адресам электронной почты, предоставленным конечной точкой единого входа. Это означает, что если у вас ранее была существующая учётная запись в Discourse с отключённым DiscourseConnect, DiscourseConnect просто повторно использует её и избегает создания новой учётной записи.

Если вы когда-либо отключите DiscourseConnect, пользователи смогут сбросить пароли и получить доступ к своим учётным записям.

Пример из реальной жизни:

При следующих настройках:

Домен Discourse: http://discuss.example.com
URL DiscourseConnect: http://www.example.com/discourse/sso
Секрет DiscourseConnect: d836444a9e4084d5b224a60c208dce14
Проверка электронной почты: Нет (добавьте require_activation=true в полезную нагрузку)

Попытка пользователя войти в систему

  • Генерируется nonce: cb68251eefb5211e58c00ff1395f0c0b

  • Генерируется исходная полезная нагрузка: nonce=cb68251eefb5211e58c00ff1395f0c0b

  • Полезная нагрузка кодируется в Base64: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI=

  • Полезная нагрузка кодируется в URL: bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D

  • Генерируется HMAC-SHA256 для полезной нагрузки, закодированной в Base64: 1ce1494f94484b6f6a092be9b15ccc1cdafb1f8460a3838fbb0e0883c4390471

Наконец, браузер перенаправляется на:

http://www.example.com/discourse/sso?sso=bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGI%3D&sig=1ce1494f94484b6f6a092be9b15ccc1cdafb1f8460a3838fbb0e0883c4390471

На другом конце

  1. Полезная нагрузка проверяется с помощью HMAC-SHA256; если sig не совпадает, процесс прерывается.
  2. Путём обратного выполнения вышеуказанных шагов извлекается nonce.

Пользователь входит в систему:

name: sam
external_id: hello123
email: test@test.com
username: samsam
require_activation: true

Генерируется неподписанная полезная нагрузка:

nonce=cb68251eefb5211e58c00ff1395f0c0b&name=sam&username=samsam&email=test%40test.com&external_id=hello123&require_activation=true

порядок не имеет значения, значения кодируются в URL

Полезная нагрузка кодируется в Base64:

bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ==

Полезная нагрузка кодируется в URL:

bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D

Полезная нагрузка, закодированная в Base64, подписывается:

3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3

Браузер перенаправляется на:

http://discuss.example.com/session/sso_login?sso=bm9uY2U9Y2I2ODI1MWVlZmI1MjExZTU4YzAwZmYxMzk1ZjBjMGImbmFtZT1zYW0mdXNlcm5hbWU9c2Ftc2FtJmVtYWlsPXRlc3QlNDB0ZXN0LmNvbSZleHRlcm5hbF9pZD1oZWxsbzEyMyZyZXF1aXJlX2FjdGl2YXRpb249dHJ1ZQ%3D%3D&sig=3d7e5ac755a87ae3ccf90272644ed2207984db03cf020377c8b92ff51be3abc3

Синхронизация записей DiscourseConnect

Вы можете использовать POST-конечную точку администратора /admin/users/sync_sso для синхронизации записи DiscourseConnect, передав ей ту же запись, которую вы бы передали конечной точке DiscourseConnect; nonce не имеет значения.

Если вы вызываете admin/users/sync_sso с другого сайта, вам нужно включить в заголовки запроса действительный api_key администратора и действительное api_username. Подробнее о том, как структурировать запрос, см. на Sync DiscourseConnect user data with the sync_sso route.

Очистка записей DiscourseConnect

Если значения external_id от вашего провайдера DiscourseConnect изменились (возможно, вы изменили алгоритм генерации, возможно, это другая конечная точка), вы можете безопасно удалить все существующие записи, используя консоль Rails:

SingleSignOnRecord.destroy_all

Выход пользователей из системы

Вы можете использовать POST-конечную точку администратора /admin/users/{USER_ID}/log_out для выхода любого пользователя из системы при необходимости.

Чтобы настроить конечную точку, на которую перенаправляет Discourse при выходе, найдите настройку logout redirect. Если здесь не установлен URL, вы будете перенаправлены обратно на URL, настроенный в discourse connect url.

Поиск пользователей по external_id

Данные профиля пользователя можно получить с помощью конечной точки /users/by-external/{EXTERNAL_ID}.json. Это вернёт полезную нагрузку JSON, содержащую информацию о пользователе, включая user_id, который можно использовать с конечной точкой log_out.

Существующие реализации

  • Гем discourse_api можно использовать для SSO. Посмотрите код SSO в его каталоге примеров, чтобы увидеть базовую реализацию.

  • Наш плагин для WordPress упрощает настройку SSO между WordPress и Discourse. Подробные сведения о его настройке находятся на вкладке SSO на странице параметров плагина.

Будущая работа

  • Мы хотели бы собрать больше референсных реализаций SSO для других платформ. Если у вас есть такая, пожалуйста, опубликуйте её в категории Dev / SSO.

Расширенные функции

  • Вы можете передавать пользовательские поля пользователей, добавляя префикс custom к имени поля. Например, custom.user_field_1 можно использовать для установки значения UserCustomField с именем user_field_1.
  • Вы можете передать avatar_url для переопределения аватара пользователя (должно быть включено SiteSetting.discourse_connect_overrides_avatar). Аватары кэшируются, поэтому передайте avatar_force_update=true, чтобы принудительно обновить их, если URL одинаков. В настоящее время вы не можете передать пустой URL для отключения аватара пользователя.
  • По умолчанию всем новым пользователям, созданным через SSO, отправляется приветственное сообщение. Если вы хотите отключить это, передайте suppress_welcome_message=true.
  • Чтобы настроить ваш экземпляр Discourse в качестве провайдера Discourse Connect, см.: Использование DiscourseConnect в качестве провайдера идентификации.

Отладка вашего провайдера DiscourseConnect

Чтобы помочь в отладке DiscourseConnect, вы можете включить настройку сайта verbose_discourse_connect_logging. При включении этой настройки подробная диагностика будет отображаться в YOURSITE.com/logs. Обязательно :white_check_mark: поле warnings в нижней части YOURSITE.com/logs.

Мы будем записывать предупреждение в логи с полным дампом полезной нагрузки SSO:

  • Каждый раз, когда инициируется процесс DiscourseConnect, мы будем записывать предупреждение в лог с полным дампом полезной нагрузки DiscourseConnect.

  • Каждый раз, когда пользователю не удаётся завершить DiscourseConnect (из-за истечения nonce или блокировки IP).

:spiral_notepad: Нужно автоматизировать регистрацию пользователей? См. Auto-provisioning user accounts when SSO is enabled

174 лайка
Discourse SSO + normal login
Sync DiscourseConnect user data with the sync_sso route
SSO login & logout issues
Is there a "log_in" SSO API endpoint?
SSO locked me out of Discourse!
What is the SSO login URL
With SSO my user still need to hit the login button
SSO Login page not showing up
How to handle Discourse SSO when the authentication site allows users to change emails?
"User Log out API" return success in response but user session still alive
SSO integration & external profile sync help
Single Sign-Out?
Mobile (firebase) SSO authentication
Discourse SSO using auth0 via URL
Login to Discourse with website account details
SSO on Discourse using Atlassian Crowd
Users who register on my site, register also on Discourse Vise Versa
Logout POST Request
Custom Login / Registration from another API
Advantage and disadvantage of enabling SSO
About the SSO category
Automatically assigning users to a group
Automatic session management with OAuth SSO
User Fields to validate users
Shibboleth / SAML / SSO -- Working Implementation for Higher Ed
Merging users from different forums
Customized login auth plugin
SSO and e-mail addresses having a plus sign
How to generate nonce from client-side Javascript
Will Discourse ask for a username if it's not provided to /session/sso_login?
Disable email verification for SSO
Discourse Ruby API testing "Unknown attribute 'auth_token' for User
[PAID] Setup SSO for self-hosted instance
Hashing Secret + Payload for SSO
SSO with TownNews CMS
Wordpress plugin not redirect to discourse login automatically
Categorizing and tracking users
Using existing RoR application for user auth / signup instead of discourse
SSO locked me out of Discourse!
Enable sso for my site
Auto-sign-in with the OpenId Connect Plugin and AWS Cognito
A way for admins to edit users' external IDs
Switching out authentication for a passwordless alternative
Segment Tracking Theme Component
Data explorer query to list the longest "estimated read time" topics?
Can usernames be numbers instead of Letters?
Create user in discourse by redirecting from another site
HMAC-256 example on Official SSO page
Discourse OAuth2 Basic
Jobs::DownloadAvatarFromUrl times out
Add links to meta.discourse.org instructions inside admin
How to configure the SSO Authorization URL via config (without using the admin panel)
Embed Discourse comments on another website via Javascript
TeamAndro exploring a migration from phpBB
DiscourseConnect payload hash encoding mismatch
Disabling SSO in development environment
Getting signed data from the server
User following invitation link is not visible in Admin/Users due to SSO
Getting signed data from the server
Getting signed data from the server
SSO and changing email addresses upstream
SSO (maybe) specific issue
SSO (maybe) specific issue
Why isn't Discourse more frequently recommended as a "community platform"?
Integration with .NET MVC application for a SaaS platform
Running my own discourse image
Unable to Login to Discourse, using wpdiscourse plugin
How do I make discourse use my platform's autentication system?
Automatic addition of users to group based on email domain
Allowing people to login using accounts from other websites
Seeking Slack Login / SSO for Discourse
Smooth J/K navigation when using keyboard
SSO to Joomla site
Discourse Connect on Local instance is not working
Discourse Connect on Local instance is not working
Implementing SSO for dev environment and troubleshoot
Login with FB, google and apple only
SSO provider implementation - Admin, moderator and groups ignored?
How to divide my community into 2 parts
Using Discourse to add a forum feature to our current application?
Shared cookie SSO: Notifying frontend
User auth with website at root and Discourse in subfolder
Can I authenticate to Drupal via Discourse?
Using Discourse as an authentication provider
Error 419 when Attempting DiscourseConnect, JavaScript
Difficulty of Tiered-access forum
Any way to not require email verification with WP as the SSO Provider?
How to auto-login user in application web view
How can I configure Single Sign On for our App to the Discourse Community Forum
[PAID] automatically change user email
Create apikey for user programmatically as admin
Discourse logins into Drupal 8/9
Discourse logins into Drupal 8/9
Bug when visiting same thread url
Open source will support customized provider SSO
Is there a way to get all emails of users with the API?
How can generate _forum_session and _t for an user through code/api call or without login to browser?
Show/hide forums based on the domain? (Shared forum via CNAME)
Integrate with DjangoRest and Vue.js
Auto-assign random, anonymous usernames
Connect Discourse Auth with my Django user DB?
Disable account confirm emails when creating users via API
Transforming usernames with SSO
WP as DiscourseConnect client: Signature parse error/Bad signature error (solved)
Automatically provision accounts with external SSO provider? (skip Create New Account prompt)
Error ArgumentError in DiscourseSsoController#sso, wrong number of arguments (given 1, expected 0)
Error ArgumentError in DiscourseSsoController#sso, wrong number of arguments (given 1, expected 0)
Embed variables in footer
Need help to setup SSO without emails
Programmatically log users out of discourse
Is it possible?
How do I remove people from putting names? I have an API system I want in there
How to detect Discourse user on Ghost Blog?
Problem in sso redirection for compose a new pre-filled topic via URL
How to make default avatars and make sure nobody changes there avatar I want to set them an avatar with my API system
How might we better structure #howto?
Making group joins automatic to an external pricing plan
Is Roblox Login Possible?
Session Timeout SSO after rebuild from Backup
Discourse login with whmcs users
2.7.0.beta4: DiscourseConnect, Topic Timer UI revamp, Login Modal UI revamp, and more
Connecting Discourse invites to Marketo emails
Auto assign member to the certain group
Connecting to an external source of avatars?
Changing avatar_url while sso_overrides_avatar is set?
SSO - User Roles or ACLs to differentiate access levels
SSO - User Roles or ACLs to differentiate access levels
User avatar selection through API no longer working
Sync WooCommerce Memberships with Discourse groups
Disabling email verification
SSO Isnt working for me
Could Discourse offer a StackExchange-like SSO/Federated login service?
Mandatory username & avatar generation - How can we do this?
Intergrading discoures in to a application
Configure single sign-on (SSO) with WP Discourse and DiscourseConnect
How to connect to an external database running on localhost
Automate User Creation
Login Help - Correct way to login
What happens to my current users after configuring SSO?
SSO groups without completely overriding
JumpCloud LDAP/SSO
Lexicon: a customizable native mobile app for your Discourse site
Usernames getting modified – numeral “1” being added
Is "partial" SSO possible?
Send an invite to a user but complete their profile programmatically
Magento 2 as SSO Provider?
Discourse SSO Provider doesn't redirect to return_sso_url as user logs in with custom SSO
Force password change after login
SSO and e-mail addresses having a plus sign
Would Discourse meet all of these niche needs to be a video game community forum?
OpenID Connect and SSO
Does `sso overrides groups` work with Oauth2?
How to prevent another log in with Auth0 and OAuth2 Basic Plugin
Add user to group after purchase
Error Log Missing
Discourseconnect logout issues
Shibboleth SSO with Discourse
Other custom code on WP installation is preventing WP Discourse from redirecting back to forum
Using discourse forum in a native app (log-in, languages)
Use Discourse as an identity provider (SSO, DiscourseConnect)
Possible to send an email login link via API?
Possible to send an email login link via API?
Self serve SSO email synchronisation
Discourse Connect: How implementing Discourse login with an existing database?
Sync group membership with external list of email addresses
Distrust: Discourse as an OpenID Connect provider
Admin sso and group permissions
Can I use my own Login page instead of discourse's Default login dialog box?
Using Discourse as SSO Provider for Wiki.js
SSO is forcibly creating the user as an admin
Modify the URL of 'create your account' button to an external site
DiscourseConnect Won't Let Me Log Back In
DiscourseConnect Won't Let Me Log Back In
DiscourseConnect Won't Let Me Log Back In
DiscourseConnect Won't Let Me Log Back In
Watched words links corrupt @mentions and #categories
Recursive Impersonation
Recursive Impersonation
How to add a custom url text link on the login page
Can discourse delete archived posts automatically and accept registration without email?
Drupal 8 and Discourse shared SSO
SSO is forcibly creating the user as an admin
Onboarding 15k Trial Users/Year: Need Help Streamlining the Process
Filling in discourse_username when not using DiscourseConnect
Is DiscourseConnect available for self-hosted?
Is DiscourseConnect available for self-hosted?
Discourse login by cookie token
Could you update user avatar for wordpress plugin sso?
Secondary Emails with SSO
How to Disable Required SSO Email Activation
Redirect to Register link after invite while using SSO
Custom field in discourseconnect
Make email optional
User avatar selection through API no longer working
Wordpress plugin not redirect to discourse login automatically
Discourse login by cookie token
How to configure Discourse as the sole user-facing login/sign-up provider for Wordpress site
Custom field in discourseconnect
System assigned profile picture not synced to Discourse Connect client sites
Discourse connect sync_sso avatar update issue
Discourse as OpenID Connect provider
Unable to create user in Discourse from WP with new registration form
Logging users in through c++ desktop application
Discourse as OpenID Connect provider
Is there any endpoint that would provide a user's external account IDs from their Discourse ID?
"Fake" OAuth Provider?
German People here
Invite only by email from database
Is it possible to autologin discourse via iframe?
New Wordpress users connecting to existing Discourse users
Login w/ Discourse w/o SSO?
Login w/ Discourse w/o SSO?
Login w/ Discourse w/o SSO?
Login w/ Discourse w/o SSO?
Generic “userN” usernames
Generic “userN” usernames
Change login link param (return_path)
Require accepting new terms (after changes) as a modal inside forum
Guest Gate Theme Component
Unable to Login to Discourse, using wpdiscourse plugin
How to switch from Discourse Connect SSO to local logins
Lack of Discourseconnect client tab in multisite for wordpress
Wordpress plugin not redirect to discourse login automatically
Wordpress plugin not redirect to discourse login automatically
Discourse Hosting Limits?
Guest Gate Theme Component
DiscourseConnect always returns "Nonce is incorrect, ..."
Auto Login enabled for public facing community?
Has anyone succeeded in using discourse as sso provider for nextcloud? Share recipe?
SSO in C# .NET App
Discourse SSO failed to login the user while redirection
Change email and username charset to unicode
Intergrate Discourse with keycloak
Auto Login enabled for public facing community?
Intergrate Discourse with keycloak
Intergrate Discourse with keycloak
Intergrate Discourse with keycloak
Intergrate Discourse with keycloak
Work with discourse users on an SPA
Work with discourse users on an SPA
WP-Discourse → User Switching Not Working
WP-Discourse → User Switching Not Working
Is there a way to use both local login and discourseConnect?
Allow my application users to login to discourse
Hide log out menu when using SSO
Discourse Integration Nextcloud bad csrf
Feature: create default user name from email's user portion when using Google OAuth2/SSO
Account login timed out when using SSO if auth_immediately = false
SSO login appears to have stopped working
Is there a way to use both local login and discourseConnect?
DiscourseConnect and user time zone / location
SSO Login issue
Configure an S3 compatible object storage provider for uploads
Use Discourse as an identity provider (SSO, DiscourseConnect)
"Fake" OAuth Provider?
Sync WooCommerce Memberships with Discourse groups
SSO Redirect Issues
Discourse Hosting Limits?
DiscourseConnect and user time zone / location
Embedding topics with login required and DiscourseConnect
WPDiscourse - Logout not working
Using Discourse as SSO provider but facilitating users continuing task on Wordpress?
Guest Gate Theme Component
"You need to sign in or sign up before continuing"
Any fallback available for failed SSO?
Changing email addresses not working as an Admin
Unable to anonymize user via API with SSO enabled
API bug : final "." in username causes error
Guest Gate Theme Component
Discourse Membership Synced with Member Status in other system (WHMCS)
Single sign-on sticks despite deleting the Discourse plugin
Populating email field on login page
Problem on SSO Login
API Create user external_ids parameter
Users unable to login with Discourse Connect
SSO Failing to Override Avatar
Manually copying over comments from Wordpress, how do I can create user accounts?
SSO Broken - The requested URL or resource could not be found
Auto approve email domains still requires staff approval
Intergrate Discourse with keycloak
Can I use the Discourse API to authenticate users in another app?
Adding Discourse to existing Ruby on Rails site
Only let staff unlink social accounts?
Use WP Discourse to publish posts from Wordpress to Discourse
Discourse Connect does not auto login anymore
Adding SSO after many users already signed up -- how to migrate them?
Update user details
Is it possible?
Is it possible?
Is it possible?
Is it possible?
Is it possible?
Is it possible?
Unable to create user in Discourse from WP with new registration form
Login error while trying to use Discourse as an identity provider (SSO, DiscourseConnect)
How to add custom query parameter in discourse connect url?
Can I use DiscourseConnect along with Discourse Native Registration?
How can we disable 2FA for an user while we are using google auth2 login in Discourse?
SSO Login with Discourse
Synchronize SSO login state between Discourse and provider
Connection and discourse account creation without going on discourse
Migrate an IPB 3.1 forum to Discourse
How to know if user has SSO
Email-less and password-less registration & authentication
Disable DiscourseConnect
Generating a login email via API
Any other way to authenticate user without redirecting to session/sso
SSO failover scenarios
How to use Discourse Connect (SSO) to update avatar, username, name?
How to use Discourse Connect (SSO) to update avatar, username, name?
How to use Discourse Connect (SSO) to update avatar, username, name?
Label Sets
An entirely email-less Discourse instance
Issue with Api
Invites keep getting error "not_matching_email"
Any other way to authenticate user without redirecting to session/sso
Bad automatic choosing of username when using SSO (DiscourseConnect)
Use Discourse as an identity provider (SSO, DiscourseConnect)
Unable to setup discourse in my windows 10
Ghost & Discourse SSO implementation
Is there a possibility for Discourse to integrate with web3 wallets?
Guest Gate Theme Component
Discourse SSO Configuration
How admin user re-logins after using discourse connect sso and custom domain
How admin user re-logins after using discourse connect sso and custom domain
How to set Authorization token in request headers when user attempts to login on discourse
How can I check in my website if the user is logged in to my Discourse?
Go from a Wordpress + Discourse structure to a Discourse site only?
Generating and retrieving user API keys
Wordpress avatars from Discourse when Discourse is the SSO provider
Discouse Connect avatar_url with S3
How to "intercept" first time SSO usages to let users confirm the SSO action and set a username?
Discourse Connect receive Discourse Approval state
Multiple development instances
Multiple development instances
How to create a login on my front-end application to a specific Discourse site?
How to create a login on my front-end application to a specific Discourse site?
Use Discourse as an identity provider (SSO, DiscourseConnect)
First time login for a user using API KEY
DiscourseConnect and Clickfunnels
Connect discourse with magento?
Can we combine 2 separate discourse sites?
Multisite vs multiple containers
Discourse login from external site
Users allowed to see only some categories
Add links to Discourse that allow users to authenticate via SSO or access private groups directly if they are logged in already
Using external_id via API
How to set Authorization token in request headers when user attempts to login on discourse
Discourse Connect Flow
Add links to Discourse that allow users to authenticate via SSO or access private groups directly if they are logged in already
Add links to Discourse that allow users to authenticate via SSO or access private groups directly if they are logged in already
Discourse Connect Flow
Issue with Drupal Discourse SSO
I keep getting logged out after implementing Discourse SSO
Wp_discourse unable to remember login status
Splitting a site into two parts
DiscourseConnect Provider Questions
Login error
DiscourseConnect Provider Questions
Create User external_ids parameter
Error creating account in Wordpress with Discourse Connect
Use Discourse Connect with Wordpress and regular login
How to add users to multiple groups using discourse connect?
The Sign up button is not activated
Admin status repeatedly revoked
Use Discourse Connect with Wordpress and regular login
Add user to group via webhook with email
Login error
Notify admins if a user updates their primary email
Customising hostname sent in email links for app deeplinking
Plugin to integrate Shopify accounts with Discourse
How to do single sign-on with forum program?
Exploring ways to partition a forum
Exploring ways to partition a forum
GET DiscourseConnect Single Sign On record via APIs
Simple login by email via deep links containing a username
While using DiscourseConnect, is the CONFIRM Account needed?
While using DiscourseConnect, is the CONFIRM Account needed?
Discourse Connect/Squarespace (SSO)
Discourse Connect/Squarespace (SSO)
Wordpress username publishing help
Wordpress username publishing help
How to set language for SSO users
Log in button Redirects Issue
Log in button Redirects Issue
Log in button Redirects Issue
Want to set internal forum on our reactjs member's platform
New instructions for SSO setup? "enable discourse connect" setting is missing
New instructions for SSO setup? "enable discourse connect" setting is missing
Bulk invite to group
Wordpress Groups Sync with Discourse
Add a new user via API
Configure GitHub login for Discourse
Seeking Guidance: Dual Authentication Setup for Moderators and Students
Seeking Guidance: Dual Authentication Setup for Moderators and Students
Anyone has discovered/ build a site as multisite (SSO), would like to see the possibilities for inspiration!
Use SSO to auto create Discourse login/password after signed up in my SaaS
Undefined method `kilobytes' for "100":String error breaks topic and avatar sync
"Login error" page during the login attempt by existing user previously added through SSO
"Login error" page during the login attempt by existing user previously added through SSO
Gate our community to just members of our Shopify site?
How best to engage Discourse for a larger WordPress magazine?
How best to engage Discourse for a larger WordPress magazine?
How can I change the registration URL?
How do I go about making a very customized theme?
An idea for more economical comments?
Unable to disable SSO via SSH
Is it possible to have an automatically updating link to a user's profile picture? Such as by giving each user one "slot" for an avatar?
SSO broken after rebuild with stable v3.3.3
Using Discourse Connect with a mobile app
Disable DiscourseConnect
Missing anchor links in certain TOC topics?
Integration into custom auth system where emails are not unique?
WP-Discourse not connected and admin email not recognized
How to disable SMTP during installation?
How to enable sso on discourse?
Create User external_ids parameter
Auto Login to my Discourse site / subdomain
How to Disable activation_reminder email sending?
Communities using discourse SSO for their in-app community experience
Extending header buttons
Auth via Discourse Forum
🧩 How to Build an Android App User Community with Discourse? [HeyApks Project]
Postgres doesn't seem to be running when running Discourse locally using Docker
Discourse sso login redirect to localhost:3000, not 4200 (running via docker)
Cross-Discourse Quoting
Is it Possible to Send Encrypted Email and Password in the Authentication Flow?
Nutzung von Nextcloud aus Discourse heraus
Inherited forum with old Discourse Connect Config and Looking for Some Guidance
Merging user accounts
Understanding PII storage in Discourse
Auto-provisioning user accounts when SSO is enabled
REQUEST: Highly Effective Age Assurance (OneID Phone No. Age Verification) Integration
Guest Gate Theme Component
Login to Discourse with custom Oauth2 provider
Can I log into multiple instances of discourse simultaneously?
Upgraded last night and login button no longer works
SSO with Roles translating to Groups
Redirect login possible?
How to disable SSO via SSH
Connect Multiple WP Sites To 1 Discourse Installation?
What is the procedure to obtain CAS between my website and my discourse instance?
Problem logging in using SSO plugin
PAID: Create Open Source SSO plugin to auth with Wild Apricot
Trouble connecting drupal and discourse
About the idea: IDENTITY = EMAIL
About the idea: IDENTITY = EMAIL
How to create members-only site with Discourse, WordPress, and LearnDash
Consequences of not validating email addresses
SSO and Restricted Groups
Questions about Discourse on Digital Ocean
Require users to join at least one group at sign-up
Use the same user database and login credentials in multiple discourse instances
How to connect my (existing) User Database?
Can usernames be numbers instead of Letters?
User group sync with drupal
Options with SSO with another custom application
Issues in Integrating SSO in Discourse
How to implement Discourse with an already built Rails project
Updating SSO documentation
Configuring SSO to Work With SocialEngine
Updating SSO documentation
Discourse view file update does not reflect in browser
Discourse view file update does not reflect in browser
Trying to set up SSO
Discourse doesn't re-verify an address changed by SSO
Discourse doesn't re-verify an address changed by SSO
User API keys specification
SSO and Discourse Consulting
Changing the unique key to identify users
Setting the user title(group?) based on the information that is coming from the sso payload
TL2 welcome message sent every time on SSO login
Error during SSO integration - Wholistic Minds
Advice needed for tailoring Discourse to my organisation
Rails error when using DiscourseConnect and Wordpress
Primary and Discourse Site Integrations
Automatic Table of Contents generation
Questions Regarding Account Authentication Methods
Can usernames be numbers instead of Letters?
Redirect all users who click on domain.com/signup to a different page
Poll Result Breakdown
Cant update email via API - invalid_access error
Disabling all emails except those registration related?
Allow admins to change email addresses easily
Can't get avatar overrides to work over SSO
Allow admins to change email addresses easily
Conflicting email addresses, giving admins more power to resolve issues
Unable to create user in Discourse from WP with new registration form
Which Discourse hosting tier should I choose?
New users via API if allow new unchecked
How to change login settings without being logged in?
A community of a no-code tool: SSO vs login via email