Client OAuth pour Kotlin : bibliothèque Ktor OAuth pour l'authentification dans les API

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 Kotlin : bibliothèque Ktor OAuth



La bibliothèque Ktor OAuth est une extension officielle pour le client HTTP Ktor, conçue pour implémenter le protocole OAuth 2.0 dans les applications Kotlin. Elle offre un moyen flexible et type-safe de s'intégrer avec les fournisseurs OAuth populaires (Google, GitHub, Facebook, VK, etc.) et prend également en charge les endpoints personnalisés. La bibliothèque fait partie de l'écosystème Ktor et peut être utilisée aussi bien dans les applications Kotlin côté serveur que côté client.



Le cas d'utilisation principal est l'obtention de tokens d'accès pour travailler avec des API REST protégées. La bibliothèque automatise le processus d'échange du code d'autorisation contre des tokens, le renouvellement des tokens (refresh token) et la gestion de l'état de la session.



Fonctionnalités clés



  • Prise en charge des flux OAuth 2.0 : Authorization Code Grant, Implicit Grant, Client Credentials, Resource Owner Password Credentials.
  • Prise en charge intégrée des fournisseurs populaires : Google, GitHub, Facebook, Twitter, VK, Yandex, Microsoft, etc.
  • Fournisseurs personnalisés : possibilité de définir manuellement les endpoints d'autorisation, de token et de redirection.
  • Renouvellement automatique des tokens : prise en charge du refresh token avec appel automatique à l'expiration de l'access token.
  • Gestion des sessions : stockage des tokens en mémoire, dans des fichiers, des bases de données ou des stockages personnalisés.
  • Intégration avec Ktor Client : configuration unifiée via des plugins, prise en charge de tous les transports (CIO, Apache, OkHttp).
  • Sécurité : prise en charge de PKCE (Proof Key for Code Exchange) pour la protection contre les attaques CSRF.


Installation



Pour ajouter la bibliothèque, ajoutez la dépendance dans build.gradle.kts :



dependencies {    // Client Ktor principal    implementation("io.ktor:ktor-client-core:2.3.7")    // Plugin OAuth    implementation("io.ktor:ktor-client-auth:2.3.7")    // Moteur spécifique (par exemple, CIO)    implementation("io.ktor:ktor-client-cio:2.3.7")}


Pour Maven :



<dependency>    <groupId>io.ktor</groupId>    <artifactId>ktor-client-auth</artifactId>    <version>2.3.7</version></dependency>


Exemple : autorisation via Google OAuth



Créez un client HTTP avec le plugin OAuth configuré pour Google :



import io.ktor.client.*import io.ktor.client.plugins.auth.*import io.ktor.client.plugins.auth.providers.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun main() { val client = HttpClient { install(Auth) { oauth { clientId = System.getenv("GOOGLE_CLIENT_ID") clientSecret = System.getenv("GOOGLE_CLIENT_SECRET") providerLookup = { OAuthServerSettings.OAuthAuthorizationCodeServerSettings( authorizeUrl = "https://accounts.google.com/o/oauth2/auth", tokenUrl = "https://oauth2.googleapis.com/token", clientId = clientId, clientSecret = clientSecret, redirectUrl = "http://localhost:8080/callback" ) } urlProvider = { request -> // Génération de l'URL pour la redirection de l'utilisateur "http://localhost:8080/login" } } } }

// Exemple de requête vers l'API Google Sheets val response: HttpResponse = client.get("https://sheets.googleapis.com/v4/spreadsheets/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/values/Sheet1!A1:D5") println(response.bodyAsText())}


Exemple : fournisseur personnalisé avec PKCE



Pour renforcer la sécurité, utilisez PKCE (P

Recommendations