He estado intentando encontrar un plugin SSO que me permita aprovechar las afirmaciones (claims) que provienen de mi IdP para mis usuarios de Discourse.
En el plugin OIDC, estás prácticamente limitado al endpoint userinfo. Eso no está mal, pero estaba intentando usar otra información de nuestro almacén de identidad y el resultado de userinfo no se puede ajustar. Había intentado forzar el plugin OIDC a usar id_token_info para fabricar el usuario, pero no tuve éxito.
Volví al plugin oauth, pero a simple vista parece tener la misma restricción básica, que es que depende de la información del usuario de un endpoint específico. Estoy trabajando para ver si puedo encontrar uno que devuelva el contenido de las afirmaciones JWT, pero ese no es realmente un caso de uso normal, así que no espero mucho.
Originalmente pensé que las “callback userinfo paths” en el oauth basic podrían usarse para mapear las afirmaciones al Usuario, pero siempre parezco obtener valores nulos en la respuesta y falló la inserción. Puedo decodificar el token del IdP y ver las afirmaciones correctas y, en este caso, en la raíz del JSON como iss, exp, etc., pero no puedo conectarlas al lado de ActiveRecord.
Estoy mirando jwt, pero no parece tener el mapeo de afirmaciones a usuario en absoluto. Básicamente, si obtienes un 200, estás bien, lo cual tampoco es lo que estaba buscando.
También encontré omniauth-jwt, que parece estar más cerca de mi objetivo, aunque no parece ser un plugin ni estar activamente mantenido. Algo que tal vez podría arreglar, pero es una tarea más grande de lo que esperaba.
¿Alguien puede indicarme una dirección para un plugin mantenido actualmente para mapear afirmaciones JWT a un Usuario o dónde podría estar cometiendo un error con uno de los plugins existentes?