Estoy tratando de usar OAuth2 para la autenticación / autorización, pero después de leer mucho, estoy confundido ... Estoy tratando de entender cómo OAuth y OpenIDConnect se relacionan entre sí, y cómo los puedo usar. autorización.
Por lo que entendí hasta ahora :
- OpenID Connect es la mejor para la autenticación, OAuth es la mejor para la autorización
- La autorización de OAuth2 se realiza a través de los ámbitos
-
Un ámbito es el permiso otorgado POR el usuario A un cliente, validado en el servidor de recursos
-
OpenID Connect id_token está pensado principalmente para la aplicación cliente, para proporcionar información del usuario, y NO como una forma para que el servidor de recursos valide al usuario
Aquí está mi caso de uso :
- Necesito proporcionar SSO a un conjunto de servicios web completamente sin estado realizados por nosotros
- OAuth está restringido a la concesión de propietario de recursos
- El servidor de identidad se proporciona de nuestro lado y está conectado a un servidor LDAP
- Solo las aplicaciones de confianza se pueden registrar como proveedores de servicios
Y lo que estoy intentando hacer, lo que me desconcierta :
- Solo los usuarios autorizados pueden acceder a una API de servicio web determinada
Por lo tanto, necesito alguna forma de verificar el permiso otorgado POR una entidad externa A un usuario, en el servidor de recursos. ¿Cuál, creo que descarta el uso de OAuth para la autorización?
No estoy seguro de cómo lograr esto con OAuth / OpenID connect, o incluso SI se ajusta a mi caso de uso.
- ¿Se puede hacer que el acceso basado en roles funcione con los ámbitos de OAuth2?
- ¿Estaría bien pasar el id_token al servidor de recursos, con un reclamo que contenga los roles del usuario (y descartar el access_token por completo)? Por lo tanto, el id_token se usaría tanto para la autenticación como para la amp; autorización. Dado que el id_token está firmado y contiene hashes, estaría bien, ¿verdad?
- ¿Debería simplemente autenticarme con OpenIDConnect, comprobando la presencia de id_token, desechando el access_token por completo y desarrollando mi propio sistema de autorización basado en roles?
Disculpas por la pared de texto, no estoy seguro de si malentiendo el alcance de OAuth / OpenID Connect aquí. ¿Estoy haciendo las suposiciones equivocadas?
Gracias.