JWT::InvalidIssuerError al decodificar JWT (OpenID Connect)

Hola :wave:! Buenas tardes, tengo una pregunta sobre el plugin OpenID Connect

Estoy intentando usar ID Uruguay (un proveedor de OpenID Connect del gobierno) con Discourse, me registré en el servidor de prueba y me enviaron los datos necesarios.

Todo el flujo parece funcionar bien excepto el callback, aparentemente el Issuer enviado en el JWT no es el mismo que en el documento de descubrimiento.
Ya me contacté con Soporte y me dijeron que básicamente el error era de Discourse (lo cual no creo).

¿Es posible agregar de alguna manera otro valor a “excepted issuer”?

Documento de descubrimiento: https://auth-testing.iduruguay.gub.uy/oidc/v1/.well-known/openid-configuration

Logs
OIDC Log: JWT cargado

---
iss: https://auth-testing.iduruguay.gub.uy/oidc/v1
sub: '7630'
aud: '862271'
exp: 1656363519
iat: 1656362919
auth_time: 1656362918
amr:
- urn:iduruguay:am:password
acr: urn:iduruguay:nid:1
nonce: 94d556d732db0db8dff0e09a174c27f2943cfe1740845abf537ff768e96c8ddf
at_hash: eokMw_xDlqb6cXB-DkDA_A
pais_documento:
  codigo: uy
  nombre: Uruguay
tipo_documento:
  codigo: 68909
  nombre: C.I.
numero_documento: '54682086'
email: alexander.barrios@estudiante.ceibal.edu.uy
email_verified: true
name: Yanquis Alexander Barrios Espíndola
given_name: Yanquis Alexander
family_name: Barrios Espíndola
nickname: uy-ci-54682086
idp: Usuario gub.uy

(oidc) Fallo de autenticación! jwt_decode_failed: JWT::InvalidIssuerError, Emisor inválido. Se esperaba ["https://auth-testing.iduruguay.gub.uy"], recibido https://auth-testing.iduruguay.gub.uy/oidc/v1


¡Desde ya muchas gracias! :hugs:

Hmm.

Desde la ubicación del documento de descubrimiento, debe asumir que el emisor es https://auth-testing.iduruguay.gub.uy/oidc/v1 ya que el documento de descubrimiento es el emisor con /.well-known/openid-configuration añadido.

Ahora el documento en sí dice issuer\t\"https://auth-testing.iduruguay.gub.uy\"

Y luego tenemos el documento de descubrimiento de OpenID Connect que establece

Y los dos requisitos en la última oración no se cumplen. El valor de la afirmación iss es idéntico a la URL del Emisor que se utilizó para recuperar la configuración, pero ambos NO son idénticos al valor issuer devuelto.

Así que, en lo que vale, creo que están equivocados y tú tienes razón. Lástima que eso no te lleve a ninguna parte.

3 Me gusta

Dato interesante, no lo sabía :thinking:

Lo reporté y enlacé tu respuesta, esperaré una respuesta de soporte de ID Uruguay :sleeping:.

Ahora mismo estoy usando un pastebin con el emisor correcto (De todos modos, era para probar) y todo parece funcionar correctamente, espero que el equipo de soporte pueda resolver este detalle antes de aplicar a ID Uruguay en modo Producción.

2 Me gusta

Me sorprende que eso funcione :slight_smile: , ya que la especificación dice

Bueno, obtuve una respuesta y simplemente no lo arreglarán “porque no hay ningún problema de su lado y es ampliamente utilizado” :slight_smile:

No veo nada en la documentación para verificar el JWT, así que esa debe ser la razón por la que “simplemente funciona” :thinking:

Documentación (Google Translate):
https://centroderecursos-agesic-gub-uy.translate.goog/web/seguridad/wiki/-/wiki/Main/ID+Uruguay+-+Integración+con+OpenID+Connect?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp


Creé un “proxy” para el documento de descubrimiento que modifica el emisor devuelto, y también “simplemente funciona”, informé esto y lo aceptaron :slight_smile:

Siento que en el futuro esto fallará porque no sigue las especificaciones, pero por ahora está bien.

¡Gracias Richard por tomarte el tiempo de ayudar! :hugs:

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.