OAuth 2.0 und JWT-Autorisierung in Kotlin: Vollständiger Leitfaden

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

Einführung in OAuth 2.0 und JWT mit Kotlin

Moderne Webanwendungen und mobile Dienste erfordern ein zuverlässiges und sicheres Authentifizierungs- und Autorisierungssystem. Die beiden gängigsten Standards in diesem Bereich sind OAuth 2.0 und JWT (JSON Web Token). In diesem Artikel werden wir im Detail besprechen, wie man OAuth 2.0 und JWT-Autorisierung in der Sprache Kotlin mit dem Spring Boot Framework implementiert. Sie erfahren, wie Sie einen Autorisierungsserver einrichten, Tokens generieren und überprüfen sowie Ihre API-Endpunkte schützen.



Grundlagen von OAuth 2.0 und JWT



Was ist OAuth 2.0?

OAuth 2.0 ist ein Autorisierungsprotokoll, das es Drittanwendungen ermöglicht, eingeschränkten Zugriff auf die Ressourcen eines Benutzers zu erhalten, ohne dessen Anmeldedaten (Benutzername und Passwort) weiterzugeben. Stattdessen wird ein Zugriffstoken verwendet, das nach erfolgreicher Authentifizierung ausgestellt wird. Die Hauptakteure von OAuth 2.0 sind:

  • Resource Owner (Ressourcenbesitzer) — der Benutzer.
  • Client (Client) — die Anwendung, die Zugriff anfordert.
  • Authorization Server — der Server, der Tokens ausstellt.
  • Resource Server — der Server, der geschützte Daten bereitstellt.


Was ist JWT?

JWT (JSON Web Token) ist ein kompaktes und in sich geschlossenes Token-Format, das Informationen über den Benutzer (Claims) in Form eines JSON-Objekts enthält. Das Token wird mit einem geheimen Schlüssel oder asymmetrischer Verschlüsselung signiert, was seine Integrität gewährleistet. Die Struktur eines JWT besteht aus drei Teilen, die durch Punkte getrennt sind:

  • Header — der Header, der den Tokentyp und den Signaturalgorithmus enthält.
  • Payload — die Nutzlast mit Daten (z. B. userId, role, exp).
  • Signature — die Signatur, die auf Basis von Header und Payload erstellt wird.

Beispiel eines JWT: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.ZL1mK9WpXoQ



Einrichtung eines Kotlin-Projekts mit Spring Security



Hinzufügen von Abhängigkeiten

Zunächst erstellen wir ein neues Spring Boot-Projekt in Kotlin. Fügen Sie in die Datei build.gradle.kts die folgenden Abhängigkeiten hinzu:

dependencies {    implementation("org.springframework.boot:spring-boot-starter-web")    implementation("org.springframework.boot:spring-boot-starter-security")    implementation("org.springframework.boot:spring-boot-starter-data-jpa")    implementation("io.jsonwebtoken:jjwt-api:0.11.5")    runtimeOnly("io.jsonwebtoken:jjwt-impl:0.11.5")    runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.11.5")    implementation("com.h2database:h2")}

Wir verwenden die Bibliothek jjwt für die Arbeit mit JWT und H2 als Datenbank zum Testen.



Security-Konfiguration

Erstellen wir eine Klasse SecurityConfig, die Spring Security konfiguriert und das Standard-Login-Formular deaktiviert:

@Configuration@EnableWebSecurityclass SecurityConfig(private val jwtAuthFilter: JwtAuthFilter) {

@Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http .csrf { it.disable() } .authorizeHttpRequests { auth -> auth.requestMatchers("/api/auth/**").permitAll() .anyRequest().authenticated() } .sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) } .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter::class.java) return http.build() }}

Wir erlauben den Zugriff auf die Endpunkte /api/auth/** ohne Authentifizierung, während alle anderen Anfragen ein JWT-Token erfordern.



Implementierung von OAuth 2.0 und JWT in Kotlin



Generierung und Überprüfung von JWT-Tokens

Erstellen wir einen Service JwtService, der für die Erstellung und

Blogs

Buchempfehlungen