Client OAuth pour Java : aperçu des bibliothèques et exemples de code

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 : comment choisir et utiliser

\n\n

OAuth (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\n

Pour 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\n

1. ScribeJava — un client OAuth léger

\n\n

ScribeJava 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\n

Intégration (Maven)

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

Exemple : connexion via Google

\n
import 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\n

Avantages 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
\n\n

2. Spring Security OAuth — pour les projets Spring Boot

\n\n

Si 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.

\n\n

Intégration (Gradle)

\n
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
\n\n

Exemple de configuration (application.yml)

\n
spring:\n  security:\n    oauth2:\n      client:\n        registration:\n                    

Recommendations