Un proveedor de servicios externo está exponiendo una API de pago que necesitamos integrar en nuestro backend.
Como comunicación de transporte, consumiremos esta API utilizando TLS con certificado de cliente y a través de una red privada MPLS.
Como marco de autenticación, el tercero sugiere Oauth2;
En su lugar, estoy sugiriendo una autenticación "más ligera" como un APIKey / ClientSecret.
¿Por qué?
Porque, desde mi experiencia "limitada", no veo ningún beneficio en el uso de Oauth2 en este escenario.
- La Api será consumida por un solo usuario de servicio utilizado por nuestro backend.
- No tenemos ningún nivel de autorización (sin reclamos).
- En Oauth2, para proteger las credenciales, las usas solo para obtener un token de acceso y te autenticas a la API usándola; en nuestro escenario, las credenciales no son credenciales personales, sino credenciales de servicio únicas proporcionadas por el proveedor de API de terceros. Filtrarlos sería como filtrar una APIKey desde mi punto de vista.
- En caso de alguna violación de seguridad, solo tendrá que revocar la Clave de API; teniendo Oauth2, tienes que revocar el token de actualización dejando el token de acceso otorgado sigue siendo válido.
- Esto nos obligará a crear algunas bibliotecas de utilidades (basadas en Restsharp) y tablas de bases de datos para manejar todo el protocolo Oauth2 impuesto de ida y vuelta. Una cosa que vi en otros proyectos es que esta biblioteca debe estar "sincronizada" en caso de acceso concurrente.
Probablemente me falten algunos puntos importantes y mi simplificación excesiva no es admisible en un servicio crucial como una API de pago.
En su experiencia, ¿tiene Oauth2 algunas ventajas sobre una "autenticación básica" en este escenario específico?