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.