HTTP-Anfragen mit Basisauthentifizierung senden

Swift:
HTTP-Anfragen mit Basisauthentifizierung senden

How to:

Mit Swift eine HTTP-Anfrage mit Basisauthentifizierung senden:

import Foundation

let username = "benutzer"
let password = "passwort"
let loginString = "\(username):\(password)"
if let loginData = loginString.data(using: .utf8) {
    let base64LoginString = loginData.base64EncodedString()

    var request = URLRequest(url: URL(string: "https://beispielapi.de/daten")!)
    request.httpMethod = "GET"
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")

    let session = URLSession.shared
    session.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else { print(error?localizedDescription ?? "Unbekannter Fehler"); return }
        if let httpResponse = response as? HTTPURLResponse, httpResponse.statusCode == 200 {
            // Verarbeite die Antwort
            print(String(data: data, encoding: .utf8) ?? "Antwort konnte nicht verarbeitet werden")
        } else {
            print("HTTP Status Code: \((response as? HTTPURLResponse)?.statusCode ?? -1)")
        }
    }.resume()
}

Die Ausgabe wäre die Antwort des Servers oder ein Fehler, falls etwas schiefgeht.

Deep Dive

Basisauthentifizierung ist eine Methode von HTTP, bei der Benutzername und Passwort kodiert und im Authorization-Header gesendet werden. Das ist nicht die sicherste Authentifizierungsmethode, da die Anmeldeinformationen im Klartext kodiert sein könnten, wenn sie nicht über HTTPS gesendet werden. Moderne Alternativen wie OAuth oder Token-basierte Authentifizierung bieten mehr Sicherheit und sind oft besser geeignet. Apple’s URLSession macht es leicht, solche Anfragen zu implementieren, aber es ist wichtig, über zusätzliche Sicherheitsaspekte wie das Speichern von Anmeldeinformationen nachzudenken.

See Also