Elm:
HTTP-Anfragen mit Basisauthentifizierung senden
So geht’s:
Elm macht HTTP-Anfragen mit Basisauthentifizierung simpel. Du musst nur die Http-Bibliothek verwenden und die Headers entsprechend setzen. Hier ist ein schnelles Beispiel:
import Http
import Base64
type alias Credentials =
{ username : String
, password : String
}
basicAuthHeader : Credentials -> Http.Header
basicAuthHeader creds =
let
encoded =
Base64.encode (creds.username ++ ":" ++ creds.password)
in
Http.header "Authorization" ("Basic " ++ encoded)
getProtectedResource : Credentials -> String -> Cmd msg
getProtectedResource creds url =
Http.get
{ url = url
, headers = [ basicAuthHeader creds ]
}
-- Geh davon aus, dass die Antwort ein `String` ist.
|> Http.expectStringStelle sicher, dass du die elm/http und truqu/elm-base64 Pakete in deinem Projekt installiert hast, um die obigen Importe zu nutzen.
Tiefgang:
Die Verwendung von Basisauthentifizierung geht auf das HTTP/1.0-Protokoll zurück und wird in der RFC 7617 spezifiziert. Während die Methode aufgrund des Fehlens von Verschlüsselung kritisiert wurde, ist es für einfache Authentifizierungsszenarien durchaus üblich. Als Alternative kannst du komplexere Authentifizierungsmechanismen wie OAuth nutzen, welche Tokens statt Benutzerdaten verwenden. Bei der Implementierung in Elm ist zu beachten, dass die Anmeldeinformationen (Benutzername und Passwort) kodiert und im Authorization Header gesendet werden müssen. Sicherheitsempfehlungen raten davon ab, Basisauthentifizierung ohne HTTPS zu verwenden, da die Anmeldeinformationen sonst leicht abgefangen werden können.
Siehe auch:
- Elm HTTP Paket Dokumentation: https://package.elm-lang.org/packages/elm/http/latest/
- Elm Base64 Paket: https://package.elm-lang.org/packages/truqu/elm-base64/latest/
- RFC 7617, The ‘Basic’ HTTP Authentication Scheme: https://tools.ietf.org/html/rfc7617