Primeiro login de um usuário usando API KEY

Olá a todos,

Estou usando o Discourse apenas como backend, sem envolvimento da interface do usuário do Discourse. Para usar a API, estou usando nome de usuário e chave de API global para fazer as requisições.
Estou enfrentando 1 problema: sempre que um novo usuário é criado em meu provedor OIDC (Keycloak), não consigo usar o nome de usuário dele em minha API. O Discourse não está reconhecendo o usuário.
Tentei depurar isso e percebi que o Discourse também cria um usuário quando um usuário faz login com sucesso pelo OIDC pela primeira vez e exibe um banner na interface do usuário informando que a conta foi criada com sucesso. Só depois disso posso usar o nome de usuário para fazer a requisição na API.
Quero automatizar esse fluxo sem a necessidade da interface do usuário. Basicamente, quero dizer que, se um usuário for criado em minha plataforma OIDC, sem usar a interface do usuário, devo ser capaz de usar o nome de usuário dele e a chave de API global para fazer minha requisição. Estou aberto a fazer requisições de API adicionais.

Qualquer dica será útil.
Agradeço antecipadamente!!

Como você suspeita, você precisará criar o usuário com a API. Sync DiscourseConnect user data with the sync_sso route pode ajudar. Se não, veja Search results for 'create user api' - Discourse Meta, ou talvez o bom e velho Engenharia reversa da API do Discourse

3 curtidas

O DiscourseConnect não funcionará no meu caso, pois em um determinado momento, ou OIDC ou Discourse Connect podem ser usados. Tentei fazer engenharia reversa da API do Discourse.
O URL é:- https://smallidea.co/u

Ele tem o seguinte payload:-
{
name: testuser
email: test@xxxxxx.com
username:discoursetestuser3
password_confirmation:2290e67e2f59d6b9a0edbc735cef0e1d
challenge:598d41761746371257a4c89d5ac61260
timezone:Asia/Calcutta
}

Não consigo entender os parâmetros “password_confirmation” e “challenge”. Alguma ideia do que é isso?
Ambos os parâmetros são dinâmicos e não há um valor fixo que eu possa passar. Isso é aleatório.