OAuth 2.0 et autorisation JWT en Java : guide pour débutants

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction à OAuth 2.0 et JWT en Java

Les applications web et API modernes nécessitent des mécanismes fiables d'authentification et d'autorisation. Les deux normes les plus populaires dans ce domaine sont OAuth 2.0 et JWT (JSON Web Tokens). Si vous êtes un développeur Java débutant, comprendre ces technologies vous ouvrira la voie à la création d'applications sécurisées et évolutives.

Dans cet article, nous allons voir ce que sont OAuth 2.0 et JWT, comment ils fonctionnent ensemble, et comment les implémenter en Java à l'aide de bibliothèques populaires. Vous apprendrez à configurer un serveur d'autorisation, à générer et vérifier des jetons JWT, ainsi qu'à sécuriser vos API REST.



Que sont OAuth 2.0 et JWT ?



OAuth 2.0 — protocole d'accès délégué

OAuth 2.0 est un protocole d'autorisation qui permet aux applications d'obtenir un accès limité aux ressources d'un utilisateur sans transmettre ses identifiants. Imaginez que vous souhaitiez donner à une application l'accès à vos photos dans Google. Au lieu de communiquer votre mot de passe Google à l'application, vous utilisez OAuth 2.0, qui délivre à l'application un jeton temporaire avec des droits limités.

Les principaux acteurs d'OAuth 2.0 :

  • Resource Owner — l'utilisateur propriétaire des ressources
  • Client — l'application demandant l'accès
  • Authorization Server — le serveur délivrant les jetons
  • Resource Server — le serveur fournissant les ressources protégées


JWT — format de jeton compact

JWT (JSON Web Token) est une norme ouverte (RFC 7519) pour la création de jetons d'accès contenant des assertions (claims) au format JSON. Un JWT se compose de trois parties séparées par des points :

  • Header — contient le type de jeton et l'algorithme de signature (par exemple, HS256 ou RS256)
  • Payload — contient les assertions (par exemple, ID utilisateur, rôles, date d'expiration)
  • Signature — signature garantissant l'intégrité du jeton

Exemple de JWT : eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U



Implémentation d'OAuth 2.0 et JWT en Java



Configuration du projet avec Spring Security

Pour implémenter OAuth 2.0 et JWT en Java, nous utiliserons Spring Boot et Spring Security. Commençons par ajouter les dépendances dans le fichier pom.xml :

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-security</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-api</artifactId>    <version>0.12.3</version></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-impl</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-jackson</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency>


Création du fournisseur JWT

Créons une classe JwtProvider qui sera responsable de la génération et de la validation des jetons JWT :

import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;import java.util.Date;

@Componentpublic class JwtProvider { private final SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256); private final

Blogs

Book Recommendations