Client OAuth pour Java : comment choisir et utiliser
\n\nOAuth (Open Authorization) est un protocole ouvert qui permet d'accorder à un tiers (par exemple, votre application Java) un accès limité aux ressources d'un utilisateur sans transmettre son identifiant et son mot de passe. Dans le développement web moderne, OAuth 2.0 est le standard de facto pour l'autorisation via les réseaux sociaux (Google, Facebook, VK) et les systèmes d'entreprise (Microsoft, GitHub).
\n\nPour Java, il existe plusieurs bibliothèques matures qui implémentent à la fois le rôle de client OAuth et de serveur. Dans cet article, nous examinerons trois solutions les plus populaires : ScribeJava, Spring Security OAuth et Google OAuth Client Library for Java. Vous apprendrez comment les intégrer dans un projet, écrire une intégration de base et choisir l'outil adapté à vos besoins.
\n\n1. ScribeJava — un client OAuth léger
\n\nScribeJava est une bibliothèque simple et légère qui prend en charge OAuth 1.0a et OAuth 2.0. Elle est idéale pour les applications autonomes ou les microservices où une pile Spring complète n'est pas nécessaire.
\n\nIntégration (Maven)
\n<dependency>\n <groupId>com.github.scribejava</groupId>\n <artifactId>scribejava-apis</artifactId>\n <version>8.3.3</version>\n</dependency>\n\nExemple : connexion via Google
\nimport com.github.scribejava.apis.GoogleApi20;\nimport com.github.scribejava.core.builder.ServiceBuilder;\nimport com.github.scribejava.core.model.*;\nimport com.github.scribejava.core.oauth.OAuth20Service;\n\npublic class GoogleOAuthExample {\n public static void main(String[] args) throws Exception {\n String clientId = "VOTRE_CLIENT_ID";\n String clientSecret = "VOTRE_CLIENT_SECRET";\n String callbackUrl = "http://localhost:8080/callback";\n\n OAuth20Service service = new ServiceBuilder(clientId)\n .apiSecret(clientSecret)\n .callback(callbackUrl)\n .scope("email profile")\n .build(GoogleApi20.instance());\n\n // Obtenir l'URL de redirection pour l'utilisateur\n String authorizationUrl = service.getAuthorizationUrl();\n System.out.println("Ouvrez dans le navigateur : " + authorizationUrl);\n\n // Après la redirection, obtenir le code d'autorisation (dans une application réelle, depuis QueryString)\n String code = "CODE_DE_REDIRECTION";\n\n // Échanger le code contre un jeton\n OAuth2AccessToken accessToken = service.getAccessToken(code);\n System.out.println("Access Token : " + accessToken.getAccessToken());\n\n // Utiliser le jeton pour demander les données de l'utilisateur\n OAuthRequest request = new OAuthRequest(Verb.GET, "https://www.googleapis.com/oauth2/v2/userinfo");\n service.signRequest(accessToken, request);\n Response response = service.execute(request);\n System.out.println("Réponse de l'API : " + response.getBody());\n }\n}\n\nAvantages de ScribeJava :
\n- \n
- Minimum de dépendances (uniquement OkHttp ou URLConnection). \n
- Prise en charge de dizaines de fournisseurs prêts à l'emploi (Google, Facebook, GitHub, VK, etc.). \n
- API simple sans abstractions complexes. \n
2. Spring Security OAuth — pour les projets Spring Boot
\n\nSi vous utilisez Spring Boot, Spring Security OAuth (module spring-security-oauth2-client) est le choix le plus naturel. Il s'intègre complètement avec la chaîne de sécurité et permet de configurer les fournisseurs via application.yml.
Intégration (Gradle)
\nimplementation 'org.springframework.boot:spring-boot-starter-oauth2-client'\n\nExemple de configuration (application.yml)
\nspring:\n security:\n oauth2:\n client:\n registration:\n Aussi dans la bibliothèque
Kingfisher pour Swift : guide complet avec exemples
Effect-ts pour TypeScript : guide complet avec exemples
Travail avec les images en C# (.NET) : bibliothèques, outils et exemples
Travailler avec les dates en Kotlin : aperçu des bibliothèques et outils
Travailler avec CSV en Go (Golang) : guide complet sur encoding/csv