Esto no se puede responder sin entender mejor su entorno.
- ¿Todo esto está dentro de su propio dominio o están estos externos conectados a su servicio?
- ¿Estos servicios requieren un conjunto diferente de permisos entre sí?
- ¿Se utilizan estos servicios para delegar una identidad de usuario que se usa en sentido descendente?
- ¿Cómo se comunican estos servicios entre sí? ¿DESCANSO? Binario?
- ¿Cuál es la pila de tecnología con la que está trabajando?
Los certificados de cliente son útiles como una forma de autenticación, pero si su requisito es tener permisos diferentes para los servicios que acceden a su propio servicio, un certificado de cliente por sí solo no ayudará. Como se mencionó anteriormente, deberá administrar los certificados que haya emitido, pero este acuerdo existe con los JWT que también requieren firma. Si tienes varios certificados para externos, lo harás
Los JWT son útiles si los consumidores tienen permisos diferentes y están accediendo a su servicio a través de REST. Si la comunicación no es REST, no se moleste con JWT. También deberá administrar el certificado de firma en JWT. Si va a utilizar JWT, tenga en cuenta las debilidades que tienen:
- Ataques de algoritmos contra bibliotecas que respetan el valor ninguno
- ataques de reproducción JWT
- Los JWT requieren TLS en la capa de transporte
- Algunos marcos JWT le permiten atacar el sistema cambiando los tipos de algoritmos de RS256 a HS256 y firmando con la clave pública
No hay nada de malo con los JWT cuando se implementan correctamente, solo la gente puede arruinar la implementación de JWT. Tengo sesgo porque actualmente estoy tratando de abordar los patrones de JWT en mi propia organización que llevan a brechas de seguridad porque la validación ignoró las fechas de caducidad ...