Estive tentando encontrar um plugin SSO que me permita aproveitar as declarações vindas do meu IdP para meus Usuários do Discourse.
No plugin OIDC, você está praticamente preso ao endpoint userinfo. Isso não é ruim, mas eu estava tentando usar outras informações do nosso identity store e o resultado do userinfo não pode ser ajustado. Eu tentei forçar o plugin OIDC a usar o id_token_info para fabricar o usuário, mas sem sucesso.
Voltei para o plugin oauth, mas superficialmente ele parece ter a mesma restrição básica, que é depender de informações do usuário de um endpoint específico. Estou trabalhando para ver se consigo encontrar um que retorne o conteúdo das declarações JWT, mas esse não é realmente um caso de uso normal, então não estou esperando muito.
Originalmente, pensei que os “callback userinfo paths” no oauth basic pudessem ser usados para mapear as declarações para o Usuário, mas sempre pareço obter nulos na resposta e falha na inserção. Posso decodificar o token do IdP e ver as declarações corretas e, neste caso, na raiz do JSON, como iss, exp, etc., mas não consigo conectá-los ao lado ActiveRecord.
Estou olhando para jwt, mas ele não parece ter o mapeamento de declarações para o usuário. Basicamente, se você obtiver um 200, está tudo bem, o que também não era o que eu estava procurando.
Também encontrei omniauth-jwt](GitHub - discourse/discourse-omniauth-jwt: An OmniAuth strategy that uses JSON Web Token for Single Sign-On), que parece mais próximo do meu objetivo, embora não pareça ser um plugin nem ativamente mantido. Algo que talvez eu pudesse consertar, mas é um bocado maior do que eu esperava morder.
Alguém pode me indicar uma direção para um plugin atualmente mantido para mapear declarações JWT para um Usuário ou onde eu possa estar errando com um dos plugins existentes?