OAuth y las APIs | Autenticacion y Autorizacion | Jose Luis Bugarin
|En algún momento, sus APIs personalizadas deberán permitir un acceso limitado a usuarios y servidores. Con OAuth puede administrar los requisitos de autorización para las aplicaciones de servidor a servidor y de aplicación a servidor.
Puede otorgar a sus propias aplicaciones o aplicaciones de terceros acceso limitado a sus API en nombre de la propia aplicación
El clásico esquema de Business to Business Integration y las APIs es el que comentare.
Lo primero que debes entender es:
Client Credentials Flow (Escenario ideal para Servidor a Servidor hoy se le conoce como Machine to Machine M2M)
Con aplicaciones de máquina a máquina (M2M), como CLI, demonios o servicios que se ejecutan en su back-end, el sistema autentica y autoriza la aplicación en lugar de un usuario. Para este escenario, los esquemas de autenticación típicos como nombre de usuario + contraseña o inicios de sesión sociales no tienen sentido. En cambio, las aplicaciones M2M usan el Flujo de credenciales del cliente (definido en OAuth 2.0 RFC 6749, sección 4.4), en el que pasan su ID de cliente y Secreto de cliente para autenticarse y obtener un token.
Un ejemplo de referencia para hacer el llamado del API o su consumo:
curl –request POST \ –url ‘https://YOUR_DOMAIN/oauth/token’ \ –header ‘content-type: application/x-www-form-urlencoded’ \ –data grant_type=client_credentials \ –data ‘client_id=YOUR_CLIENT_ID’ \ –data client_secret=YOUR_CLIENT_SECRET \ –data audience=YOUR_API_IDENTIFIER
y obtendremos una respuesta (response):
{ «access_token»:«werty546erhttur35», «token_type»:«Bearer», «expires_in»:3200}
y el consumo del API:
curl –request GET \ –url https://myapi.com/api \ –header ‘authorization: Bearer ACCESS_TOKEN’ \ –header ‘content-type: application/json’
Hola Jose.
El flujo que muestras es para un caso de uso en el cual un usuario ya esta registrado en la aplicación. Sin embargo me causa un duda y es respecto a un paso anterior a este, el «registro del usuario». De acuerdo al Dominio del Negocio. ¿Donde queda almacenado la BD de mis usuarios? En cada API o es que el OAuth tiene como responsabilidad la gestion de usuarios y comparte la validación a través de su API?