JWT-Token in Swift: Vollständiger Leitfaden zur Arbeit mit JSON Web Tokens

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

JWT-Token in Swift (iOS/macOS): Vollständiger Leitfaden



JSON Web Token (JWT) ist eine kompakte, URL-sichere Methode zur Datenübertragung zwischen Parteien im JSON-Format. Im Apple-Ökosystem (iOS, macOS, watchOS, tvOS) wird JWT häufig für die Benutzerauthentifizierung, den Informationsaustausch zwischen Diensten und die Implementierung von Single Sign-On verwendet. In diesem Artikel werden wir uns ansehen, wie man mit JWT-Token in Swift arbeitet, welche Bibliotheken man verwendet und wie man den gesamten Zyklus von der Erstellung bis zur Verifizierung implementiert.



Was ist JWT und warum wird es in iOS/macOS benötigt?



JWT besteht aus drei Teilen, die durch Punkte getrennt sind:



  • Header – der Kopf, der den Tokentyp und den Signaturalgorithmus enthält (z. B. HS256 oder RS256).
  • Payload – die Nutzlast mit Daten (Claims), wie Benutzer-ID, Ablaufdatum (exp), Aussteller (iss) und andere.
  • Signature – die Signatur, die auf Basis von Header, Payload und einem geheimen Schlüssel (oder einem Schlüsselpaar für asymmetrische Algorithmen) erstellt wird.


In mobilen Apps wird JWT normalerweise verwendet für:

  • Speicherung der Benutzersitzung nach dem Login.
  • Übertragung von Zugriffsrechten zwischen Client und Server.
  • Sicheren Datenaustausch zwischen Microservices.


Beliebte Bibliotheken für die Arbeit mit JWT in Swift



Es gibt mehrere bewährte Bibliotheken, die die Arbeit mit JWT auf Apple-Plattformen vereinfachen:



  • Swift-JWT (IBM) – eine der beliebtesten, unterstützt HS256, RS256, ES256 und andere Algorithmen, funktioniert auf iOS, macOS, Linux.
  • JWTDecode (Auth0) – eine leichte Bibliothek nur zum Dekodieren und Überprüfen der Signatur (ohne Token-Erstellung).
  • Vapor JWT – für die Serverseite in Swift (Vapor), kann aber auch in Client-Projekten verwendet werden.
  • Kitura-CredentialsJWT – Teil des Kitura-Ökosystems von IBM.


In diesem Artikel konzentrieren wir uns auf die Bibliothek Swift-JWT, da sie am vielseitigsten und aktiv unterstützt wird.



Installation von Swift-JWT über Swift Package Manager (SPM)



Fügen Sie die Abhängigkeit in der Datei Package.swift oder über Xcode hinzu:



// Package.swiftdependencies: [    .package(url: "https://github.com/Kitura/Swift-JWT.git", from: "4.0.0")],targets: [    .target(name: "YourTarget", dependencies: ["SwiftJWT"])]


Oder in Xcode: File → Swift Packages → Add Package Dependency und geben Sie die URL an: https://github.com/Kitura/Swift-JWT.git.



Erstellung eines JWT-Tokens mit einem symmetrischen Schlüssel (HS256)



Betrachten wir ein Beispiel für die Erstellung eines JWT mit dem Algorithmus HS256 (symmetrischer Schlüssel):



import SwiftJWT

// Definieren der Struktur für den Payloadstruct MyClaims: Claims { let sub: String let exp: Date let iss: String let admin: Bool}

// Erstellen der Nutzlastlet claims = MyClaims( sub: "1234567890", exp: Date(timeIntervalSinceNow: 3600), // Token lebt 1 Stunde iss: "pythonlib.ru", admin: true)

// Erstellen des JWT-Objektsvar jwt = JWT(claims: claims)

// Festlegen des Headers (optional, standardmäßig HS256)let header = Header(kid: "my-key-id")jwt.header = header

// Geheimer Schlüssel (in einem echten Projekt im Keychain oder .env speichern)let privateKey = "my-secret-key".data(using: .utf8)!

// Signieren und Token-String erhaltendo { let signedJWT = try jwt.sign(using: .hs256(key: privateKey)) print("Erstellter JWT:\\(signedJWT)")} catch { print("Signaturfehler: \\(error)")}


Verifizierung und Dekodierung von JWT



Um die Signatur zu überprüfen und Daten aus dem Token zu extrahieren, verwenden Sie:



let jwtString = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZXhwIjoxNjg5OTk5OTk5LCJpc3MiOiJweXRob25saWIucnUiLCJhZG1                    

Empfehlungen