generate - laravel passport tutorial español
OAuth o JWT? ¿Cuál usar y por qué? (3)
Estoy empezando a aprender acerca de la autenticación basada en token y estoy tratando de aprender cómo implementarla en Laravel 5. Encontré dos tecnologías muy populares para hacer esto, pero estoy confundido ya que soy nuevo en estas dos tecnologías.
Este artículo en Medium dice que debo ir con lucadegasperi/oauth2-server-laravel que estoy seguro de que es un paquete muy popular en la comunidad a juzgar por la cantidad de estrellas en Github y la cantidad de referencias que me han llevado a hacerlo. Este se supone que me ayude con la implementación de OAuth.
Este otro artículo en Scotch.io me alienta a usar tymondesigns/jwt-auth que también es muy popular nuevamente, a juzgar por el número de estrellas en Github.
En este punto no estoy seguro de cuál usar principalmente porque soy un desarrollador novato y no he trabajado con ninguno de ellos.
¿Podría alguien señalarme cuáles son los pros y los contras de cada uno de ellos y cuál debería implementar? ¿Mi tipo de proyecto también dictará qué tipo debo usar? ¿Y cómo?
Además, si está argumentando que debo elegir uno sobre el otro, también podría señalar buenos recursos que me ayuden a comenzar con ellos. Aparte de los dos enlaces que me proporcioné, por supuesto.
JWT es un protocolo de autenticación simple, Oauth es un marco de autenticación.
Un desarrollador experimentado tardará aproximadamente un mes en comprender e implementar por completo Oauth. Un desarrollador experimentado puede recoger el protocolo JWT aproximadamente un día después de leer las especificaciones. Así que básicamente, se reduce a su caso de uso específico.
Si desea una autenticación http sin estado simple para una api, entonces JWT es muy bueno y relativamente rápido de implementar, incluso para un desarrollador novato.
Algunos recursos de JWT para usted:
- http://jwt.io/
- https://auth0.com/docs
- http://www.toptal.com/web/cookie-free-authentication-with-json-web-tokens-an-example-in-laravel-and-angularjs
Y un recurso de Oauth:
JWT significa JSON Web Token ya que el nombre sugiere que es solo un token para transferir datos protegidos entre dos partes, es decir, cliente y servidor.
Oauth2 en otro tenía un conjunto de reglas o un procedimiento comúnmente denominado marco que ayuda a autenticar y autorizar a dos partes a transferir datos protegidos.
El siguiente diagrama explicará cómo funciona auth2
Aquí hay una explicación más detallada de los pasos en el diagrama:
- La aplicación solicita autorización del usuario para acceder a los recursos del servicio.
- Si el usuario autorizó la solicitud, la solicitud recibe una autorización de autorización.
- La aplicación solicita un token de acceso del servidor de autorización (API) al presentar la autenticación de su propia identidad y la concesión de autorización.
- Si la identidad de la aplicación se autentica y la concesión de autorización es válida, el servidor de autorización (API) emite un token de acceso a la aplicación. La autorización está completa.
- La aplicación solicita el recurso del servidor de recursos (API) y presenta el token de acceso para la autenticación
- Si el token de acceso es válido, el servidor de recursos (API) sirve el recurso a la aplicación
Ambos se pueden utilizar juntos para transferir datos seguros.
Donde JWT entra en juego en los pasos 3 o 6 de oauth2
El token web JSON (JWT) es un estándar abierto (RFC 7519) que define una forma compacta y autónoma para transmitir de forma segura información entre las partes como un objeto JSON. Esta información puede ser verificada y confiable porque está firmada digitalmente. Los JWT pueden firmarse usando un secreto (con el algoritmo HMAC) o un par de claves pública / privada usando RSA.
OAuth 2.0 es el protocolo de autorización. OAuth 2.0 reemplaza el trabajo realizado en el protocolo original de OAuth creado en 2006. OAuth 2.0 se enfoca en la simplicidad del desarrollador del cliente y proporciona flujos de autorización específicos para aplicaciones web, aplicaciones de escritorio, teléfonos móviles y dispositivos de sala de estar. Esta especificación se está desarrollando dentro del IETF OAuth WG.
- La OAuth Tenemos diferentes tipos de tokens.
1) tokens de seguridad WS, especialmente tokens SAML
2) fichas de JWT
3) fichas de legado
4) fichas personalizadas
Lo más importante que se debe entender al comparar JWT y OAuth2, es que no son iguales. O incluso incompatible.
JWT es un protocolo de autenticación. Esto significa que es un conjunto estricto de instrucciones para la emisión y validación de tokens de acceso firmados. Los tokens contienen notificaciones que son utilizadas por una aplicación para limitar el acceso a un usuario.
OAuth2 es un marco de autenticación OAuth2, por otro lado, es un marco, piense en una guía muy detallada, para permitir a los usuarios y aplicaciones autorizar permisos específicos para otras aplicaciones tanto en entornos privados como públicos.
Algunos buenos enlaces: