web-dev-qa-db-fra.com

OAuth ou JWT? Lequel utiliser et pourquoi?

Je commence à me renseigner sur l'authentification basée sur les jetons et j'essaie d'apprendre à l'implémenter dans Laravel 5. J'ai rencontré deux technologies très populaires pour le faire, mais je suis confus depuis que je suis nouveau pour ces deux technologies.

Cet article sur Medium dit que je devrais y aller avec lucadegasperi/oauth2-server-laravel qui, j'en suis sûr, est un package très populaire dans la communauté à en juger par le nombre d'étoiles sur Github et le nombre de références qui m'y ont conduit. Celui-ci est censé m'aider avec l'implémentation OAuth.

Cet autre article sur 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 ne sais pas lequel utiliser principalement parce que je suis un développeur novice et je n'ai travaillé avec aucun d'eux.

Quelqu'un pourrait-il me dire quels sont les avantages et les inconvénients de chacun d'eux et lequel dois-je mettre en œuvre? Mon type de projet déterminera-t-il également le type à utiliser? Et comment?

De plus, si vous faites valoir que je devrais choisir l'un plutôt que l'autre, pourriez-vous également indiquer de bonnes ressources qui pourraient m'aider à commencer par eux. Outre les deux liens que je me suis fournis bien sûr.

26
Rohan

JWT est un protocole d'authentification simple, Oauth est un cadre d'authentification.

Un développeur expérimenté prendra environ un mois pour bien comprendre et implémenter Oauth. Un développeur expérimenté peut prendre le protocole JWT en environ une journée de lecture des spécifications. Donc, fondamentalement, cela se résume à votre cas d'utilisation spécifique.

Si vous voulez une authentification http sans état simple sur une API, JWT est très bien et relativement rapide à implémenter, même pour un développeur novice.

Quelques ressources JWT pour vous:

Et une ressource Oauth:

31
Gravy

JWT signifie JSON Web Token car son nom suggère qu'il ne s'agit que d'un jeton pour le transfert de données sécurisées entre deux parties, à savoir le client et le serveur.

Oauth2 sur d'autre had est un ensemble de règles ou une procédure communément appelée cadre qui permet d'authentifier et d'autoriser deux parties à transférer des données sécurisées.

Le diagramme suivant explique comment fonctionne oauth2

Authorization Code flow

Voici une explication plus détaillée des étapes du diagramme:

  1. L'application demande une autorisation d'accès aux ressources de service à l'utilisateur
  2. Si l'utilisateur a autorisé la demande, l'application reçoit une autorisation
  3. L'application demande un jeton d'accès au serveur d'autorisation (API) en présentant l'authentification de sa propre identité et l'octroi de l'autorisation
  4. Si l'identité de l'application est authentifiée et que l'autorisation d'autorisation est valide, le serveur d'autorisation (API) émet un jeton d'accès à l'application. L'autorisation est terminée.
  5. L'application demande la ressource au serveur de ressources (API) et présente le jeton d'accès pour l'authentification
  6. Si le jeton d'accès est valide, le serveur de ressources (API) sert la ressource à l'application

Ces deux éléments peuvent être utilisés ensemble pour transférer des données sécurisées.

Où JWT entre en jeu au 3ème 6ème pas de oauth2

13
Samuel J Mathew

Le jeton Web JSON (JWT) est une norme ouverte (RFC 7519) qui définit un moyen compact et autonome pour transmettre en toute sécurité des informations entre les parties en tant que JSON objet. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement. Les JWT peuvent être signés à l'aide d'un secret (avec l'algorithme HMAC) ou d'une paire de clés publique/privée à l'aide de RSA.

OAuth 2.0 est le protocole d'autorisation. OAuth 2.0 remplace le travail effectué sur le protocole original OAuth créé en 2006. OAuth 2.0 se concentre sur la simplicité du développeur client tout en fournissant des flux d'autorisation spécifiques pour les applications Web, les applications de bureau, les téléphones mobiles et les appareils de salon. Cette spécification est en cours de développement au sein du groupe de travail IETF OAuth.

- Le OAuth Nous avons différents types de jetons.

1) Jetons WS-Security, en particulier les jetons SAML

2) Jetons JWT

3) Jetons hérités

4) Jetons personnalisés

La chose la plus importante à comprendre lorsque l'on compare JWT et OAuth2, c'est qu'ils ne se ressemblent pas. Ou même incompatible.

JWT est un protocole d'authentification Cela signifie qu'il s'agit d'un ensemble strict d'instructions pour l'émission et la validation des jetons d'accès signés. Les jetons contiennent des revendications qui sont utilisées par une application pour limiter l'accès à un utilisateur.

** OAuth2 est un cadre d'autorisation ** D'un autre côté, OAuth2 est un cadre, pensez à des directives très détaillées, pour permettre aux utilisateurs et aux applications d'autoriser des autorisations spécifiques à d'autres applications dans les paramètres privés et publics.

Quelques bons liens:

8
vaquar khan