¿Debo usar OAuth2 o JWT para mi API?

No son exclusivos. Puede usar Oauth2 con tokens JWT. La diferencia entre los tokens JWT y no JWT es práctica.

  • Los tokens JWT requieren, como máximo, una comunicación única entre el servidor de recursos y el servidor de autorización en tiempo de ejecución. El servidor de recursos debe solicitar al servidor de autorización la clave pública para descifrar los tokens JWT. Esto se puede hacer al inicio del servidor de recursos. Esto incluso se puede almacenar en el servidor de recursos en un archivo de propiedades evitando la consulta.
  • Los tokens que no son JWT requieren que el servidor de recursos solicite al servidor de autorización los detalles del usuario asociados con el token y si el token es válido o no en cada solicitud del cliente.
  • Los tokens JWT no se pueden desautorizar fácilmente. Una vez que se ha autorizado un token JWT, el servidor de recursos no tiene un medio fácil para saber si el token sigue siendo válido, a menos que le pregunte al servidor de autorización, perdiendo los beneficios obtenidos en el primer punto.
  • Los tokens que no son JWT, una vez desautorizados en el servidor de autorización, están desautorizados en todos los servidores de recursos porque los servidores de recursos se están retransmitiendo en el servidor de autorización para verificar la validez de cada solicitud.

El enfoque bes es usar tokens JWT de corta duración. Tienes un compromiso entre los dos mundos.

La comparación en sí no parece ser correcta, una respuesta rápida sería si va a construir una aplicación móvil o una interfaz de usuario desacoplada para su aplicación web, puede elegir JWT, que es un protocolo estándar para implementar la autenticación en un entorno sin estado

Mientras que OAuth es algo complejo que se parece más a un marco de autenticación, en caso de que planee extender sus servicios de autenticación y quiera convertirse en un proveedor de identidad, tiene sentido para el usuario OAuth.

JWT no es un sistema de autorización. Para oauth2, puede usar uno de dos tipos de tokens. Puede usar algo opaco que el servidor de recursos no puede verificar por sí mismo (tiene que comunicarse con el servidor de autorización), o puede usar un token autocontenido firmado. Para este último caso, utilice JWT – JSON Web Token.

Son cosas diferentes y compatibles.

Oauth2 permite a los usuarios autorizar a terceros a acceder a su información sin que tengan que conocer las credenciales del usuario.

Y JWT es un protocolo de autenticación.

Puede usar una implementación de OAuth2 que emita tokens web JSON como mecanismo de autenticación.

Si necesita más información sobre este mecanismo, aquí hay alguna información:

Actualizar token con autenticación JWT. Implementación en Node.js

OAuth2, protocolo de autorización

Encontré interesante anwer … aquí

OAuth 2 VS JSON Web Tokens: Cómo asegurar una API

Por lo que he visto, ambos. JWT posee el token de autorización que se proporciona después de la autenticación con OAuth2.