Concordo, mas apenas uma dica, ele usa o Fluxo OAuth2 do Omniauth e tem seu próprio mecanismo de registro para obter um segredo de cliente neste código aqui discourse/app/services/discourse_id/register.rb at 62942ee5851b55aa1c0a56dbd3f43af1330ea451 · discourse/discourse · GitHub
Não tenho certeza se o omniauth usa OIDC ou um endpoint de introspecção de token para obter os atributos reais do usuário, no entanto.