OAuth ou JWT? Lequel utiliser et pourquoi?
je commence à en savoir plus sur l'authentification par jeton et j'essaie d'apprendre comment l'implémenter dans Laravel 5. Je suis tombé sur deux technologies très populaires pour faire cela, mais je suis confus puisque je suis nouveau à ces deux technologies.
le Présent article au Moyen , dit que je devrais aller avec lucadegasperi/oauth2-serveur-laravel dont je suis sûr est très populaire paquet dans la communauté, à en juger par le nombre de étoiles sur Github et le nombre de références qui m'ont conduit à elle. Celui-ci est censé m'aider avec la mise en œuvre de OAuth.
This other article at Scotch.io m'encourage à utiliser tymondesigns/jwt-auth qui est également très populaire à en juger par le nombre d'étoiles sur Github.
à ce stade, je suis indécis de celui à utiliser principalement parce que je suis un développeur novice et je n'ai pas travaillé avec l'un d'eux.
est-ce que quelqu'un pourrait me dire quels sont les avantages et les inconvénients de chacun d'eux et lequel je devrais mettre en œuvre? Mon type de projet dictera-t-il aussi quel type je devrais utiliser? Et comment?
de plus, si vous faites valoir que je devrais choisir l'un plutôt que l'autre, pourriez-vous également souligner de bonnes ressources qui m'aideraient à commencer avec eux. À part les deux liens que je me suis fournis bien sûr.
3 réponses
JWT est un protocole d'authentification simple, Oauth est un framework d'authentification.
un développeur expérimenté mettra environ un mois à bien comprendre et mettre en œuvre Oauth. Un développeur expérimenté peut prendre le protocole JWT en environ une journée de lecture des spécifications. Donc en gros, ça se résume à votre cas d'utilisation.
si vous voulez une authentification http apatride simple à une api, alors JWT est très bien et relativement rapide à implémenter, même pour un développeur novice.
quelques ressources JWT pour vous:
- 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
Et Oauth ressource:
JWT signifie JSON Web Token car son nom suggère qu'il ne s'agit que d'un token pour le transfert de données sécurisées entre deux parties, c'est-à-dire le client et le serveur.
Oauth2 on other had est un ensemble de règles ou une procédure communément appelée un cadre qui aide à authentifier et autoriser deux parties à transférer des données sécurisées.
le schéma suivant explique comment fonctionne oauth2
voici une explication plus détaillée des étapes du diagramme:
- L'application demande l'autorisation d'accéder à des ressources de service de l'utilisateur
- si l'Utilisateur a autorisé la requête, la demande reçoit une autorisation
- l'application demande un token d'accès au serveur d'autorisation (API) en présentant une authentification de sa propre identité, et la subvention d'autorisation
- si l'identité de l'application est authentifiée et que la subvention d'autorisation est valide, le serveur d'autorisation (API) émet un jeton d'accès à l'application. L'autorisation est complète.
- l'application demande la ressource à partir du serveur de ressources (API) et présente le jeton d'accès pour l'authentification
- si le token d'accès est valide, le serveur de ressources (API) sert la ressource à la application
ces deux éléments peuvent être utilisés ensemble pour transférer des données sécurisées.
où JWT entre en jeu dans le 3ème 6ème pas de oauth2
JSON Web Token (JWT) est une norme ouverte (RFC 7519) qui définit un moyen compact et autonome pour transmettre en toute sécurité de l'information entre les parties comme un objet JSON. Cette information peut être vérifiée et fiable parce qu'elle est signée numériquement. Les JWT peuvent être signés en utilisant un secret (avec l'algorithme HMAC) ou une paire de clés publiques/privées en utilisant RSA.
OAuth 2.0 est un protocole pour l'autorisation. OAuth 2.0 remplace les travaux effectués sur le protocole initial de L'Organisation mondiale de la santé créé en 2006. OAuth 2.0 met l'accent sur la simplicité du développeur client tout en fournissant des flux d'autorisation spécifiques pour les applications web, les applications bureautiques, les téléphones mobiles et les appareils de salon. Cette spécification est en cours d'élaboration au sein du groupe de travail de L'IETF.
- OAuth Nous avons différents types de jetons.
1) WS-jetons de sécurité, en particulier les jetons SAML
2) JWT tokens
3) Jetons de Legs
4) jetons personnalisés
la chose la plus importante à comprendre en comparant JWT et OAuth2, c'est qu'ils ne sont pas semblables. Ou même incompatible.
JWT est un protocole d'authentification Cela signifie qu'il s'agit d'un ensemble d'instructions strictes pour la délivrance et la validation des jetons d'accès signés. Le jetons contiennent des affirmations qui sont utilisés par une application permettant de limiter l'accès à un utilisateur.
OAuth2 est une structure d'authentification OAuth2, d'un autre côté, est un cadre, pensez ligne directrice très détaillée, pour permettre aux utilisateurs et aux applications d'autoriser des permissions spécifiques à d'autres applications dans des cadres privés et publics.
Quelques bons liens: