Client OAuth pour Java : ScribeJava et Spring Security OAuth2

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

Client OAuth pour Java : ScribeJava et Spring Security OAuth2



Dans le développement web moderne, l'intégration avec des services externes via le protocole OAuth 2.0 est devenue un standard de facto. Qu'il s'agisse de connexion via Google, GitHub, Facebook ou d'accès à l'API de plateformes tierces, le développeur Java a besoin d'un outil fiable pour travailler avec OAuth. Dans cet article, nous examinerons en détail deux bibliothèques clés : ScribeJava (légère et polyvalente) et Spring Security OAuth2 (partie de l'écosystème Spring). Vous apprendrez comment choisir l'outil approprié et implémenter un client OAuth en Java.



Qu'est-ce qu'un client OAuth et pourquoi en a-t-on besoin ?

Un client OAuth est un composant logiciel qui permet à votre application (le client) d'accéder en toute sécurité aux ressources d'un utilisateur sur un serveur tiers (le fournisseur) sans transmettre de mot de passe. À la place, un échange de jetons d'accès est utilisé. En Java, cela est implémenté via des bibliothèques spécialisées qui prennent en charge toute la complexité du protocole : génération de l'URL d'autorisation, traitement du callback, obtention et renouvellement des jetons.



1. ScribeJava — un client OAuth léger et indépendant

ScribeJava (anciennement Scribe) est une bibliothèque minimaliste mais puissante pour OAuth 1.0a et OAuth 2.0. Elle n'est liée à aucun framework, ce qui la rend idéale pour les microservices, les applications Java classiques ou Android. Principaux avantages :

  • Prise en charge de dizaines de fournisseurs "prêts à l'emploi" (Google, Facebook, GitHub, VK, Yandex, etc.)
  • API simple et intuitive
  • Aucune dépendance superflue
  • Prise en charge de PKCE (Proof Key for Code Exchange) pour les clients publics


Exemple : Autorisation via GitHub avec ScribeJava

Considérons un scénario de base — l'obtention d'un jeton d'accès depuis GitHub. Pour commencer, ajoutez la dépendance dans pom.xml :



<dependency>    <groupId>com.github.scribejava</groupId>    <artifactId>scribejava-apis</artifactId>    <version>8.3.3</version></dependency>


Voici maintenant le code du client OAuth :



import com.github.scribejava.apis.GitHubApi;import com.github.scribejava.core.builder.ServiceBuilder;import com.github.scribejava.core.model.OAuth2AccessToken;import com.github.scribejava.core.model.OAuthRequest;import com.github.scribejava.core.model.Response;import com.github.scribejava.core.model.Verb;import com.github.scribejava.core.oauth.OAuth20Service;

public class GitHubOAuthExample { public static void main(String[] args) throws Exception { final String clientId = "votre_client_id"; final String clientSecret = "votre_client_secret"; final String callbackUrl = "http://localhost:8080/callback";

// Création du service OAuth 2.0 OAuth20Service service = new ServiceBuilder(clientId) .apiSecret(clientSecret) .callback(callbackUrl) .scope("user:email") // demande d'accès à l'email .build(GitHubApi.instance());

// Étape 1 : Obtenir l'URL de redirection pour l'utilisateur final String authorizationUrl = service.getAuthorizationUrl(); System.out.println("Suivez le lien pour vous autoriser : " + authorizationUrl);

// Étape 2 : Après la redirection, extraire le code du callback // (généralement fait dans un contrôleur, ici pour l'exemple — saisie console) System.out.print("Entrez le code du callback : "); java.util.Scanner scanner = new java.util.Scanner(System.in); String code = scanner.nextLine();

// Étape 3 : Échanger le code contre un jeton d'accès OAuth2AccessToken accessToken = service.getAccessToken(code); System.out.println("Jeton d'accès : " + accessToken.getAccessToken());

// Étape 4 : Utiliser le jeton pour une requête à l'API OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.g

Recommendations