Primero, permítame asegurarle que he leído varias publicaciones sobre el tema antes de hacer esta pregunta, pero todavía estoy confundido y apreciaría más información.
Entonces, aquí está la premisa:
- Hay una aplicación cliente que autentica al usuario a través de OpenID Connect;
- Esta aplicación habla con una API externa ("servidor de recursos") que necesita realizar una autorización precisa basada en la identidad del usuario ;
- La API externa recibe un token de acceso (portador JWT) de la aplicación cliente. El token de acceso es emitido por el servidor de autorización en el ámbito de un flujo de OpenID Connect;
- El token de acceso tiene el reclamo de audiencia establecido en la ID del servidor de recursos (y el servidor de recursos valida el reclamo de audiencia);
- El token de acceso tiene un reclamo de UPN / correo electrónico que describe la identidad del usuario.
Ahora aquí es donde me confundo:
Por un lado, estoy usando OIDC y no OAuth 2.0 simple, por lo que debería estar al tanto de las vulnerabilidades de seguridad (por supuesto, siempre que cuente con medidas para mitigar los ataques CSRF y rechazar cualquier token "falsificado").
Por otra parte, sin embargo, estoy pasando información sobre el usuario en un token de acceso que se cree que es un gran no-no en el mundo de OIDC & OAuth.
¿Estoy malinterpretando algo? ¿Es posible tener información de identidad en un token de acceso siempre que el token de acceso se haya obtenido en el alcance de un flujo OIDC?
Por si acaso, me doy cuenta de que existe una noción de ámbitos, pero no parecen una herramienta adecuada para definir y administrar los permisos de grano fino .