OAuth-Client für Kotlin: Ktor OAuth-Bibliothek für API-Authentifizierung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

OAuth-Client für Kotlin: Ktor OAuth-Bibliothek



Die Ktor OAuth-Bibliothek ist eine offizielle Erweiterung für den Ktor HTTP-Client, die zur Implementierung des OAuth 2.0-Protokolls in Kotlin-Anwendungen entwickelt wurde. Sie bietet eine flexible und typsichere Möglichkeit zur Integration mit gängigen OAuth-Anbietern (Google, GitHub, Facebook, VK u.a.) und unterstützt auch benutzerdefinierte Endpunkte. Die Bibliothek ist Teil des Ktor-Ökosystems und kann sowohl in Server- als auch in Client-Kotlin-Anwendungen verwendet werden.



Der Hauptanwendungsfall ist das Abrufen von Zugriffstokens für die Arbeit mit geschützten REST-APIs. Die Bibliothek automatisiert den Prozess des Austauschs eines Autorisierungscodes gegen Tokens, die Aktualisierung von Tokens (Refresh Token) und die Verwaltung des Sitzungszustands.



Wichtige Funktionen



  • Unterstützung von OAuth 2.0-Abläufen: Authorization Code Grant, Implicit Grant, Client Credentials, Resource Owner Password Credentials.
  • Integrierte Unterstützung gängiger Anbieter: Google, GitHub, Facebook, Twitter, VK, Yandex, Microsoft u.a.
  • Benutzerdefinierte Anbieter: Möglichkeit, Autorisierungs-, Token- und Redirect-Endpunkte manuell festzulegen.
  • Automatische Token-Aktualisierung: Unterstützung für Refresh Token mit automatischem Aufruf bei Ablauf des Access Tokens.
  • Sitzungsverwaltung: Speicherung von Tokens im Arbeitsspeicher, in Dateien, Datenbanken oder benutzerdefinierten Speichern.
  • Integration mit Ktor Client: Einheitliche Konfiguration über Plugins, Unterstützung aller Transporte (CIO, Apache, OkHttp).
  • Sicherheit: Unterstützung von PKCE (Proof Key for Code Exchange) zum Schutz vor CSRF-Angriffen.


Installation



Fügen Sie die Abhängigkeit in build.gradle.kts hinzu, um die Bibliothek einzubinden:



dependencies {    // Haupt-Ktor-Client    implementation("io.ktor:ktor-client-core:2.3.7")    // OAuth-Plugin    implementation("io.ktor:ktor-client-auth:2.3.7")    // Spezifische Engine (z.B. CIO)    implementation("io.ktor:ktor-client-cio:2.3.7")}


Für Maven:



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


Beispiel: Autorisierung über Google OAuth



Erstellen Sie einen HTTP-Client mit dem OAuth-Plugin, das für Google konfiguriert ist:



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 -> // Generierung der URL für die Benutzerweiterleitung "http://localhost:8080/login" } } } }

// Beispielanfrage an die Google Sheets API val response: HttpResponse = client.get("https://sheets.googleapis.com/v4/spreadsheets/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/values/Sheet1!A1:D5") println(response.bodyAsText())}


Beispiel: Benutzerdefinierter Anbieter mit PKCE



Verwenden Sie PKCE (P

Empfehlungen