HTTP-Anfragen mit Basisauthentifizierung senden

Haskell:
HTTP-Anfragen mit Basisauthentifizierung senden

Wie geht das?

Um eine HTTP-Anfrage mit Basisauthentifizierung in Haskell zu senden, kann man die http-client und base64-bytestring Bibliotheken verwenden. Hier ist ein einfaches Beispiel, wie das aussehen könnte:

import Network.HTTP.Client
import Network.HTTP.Types.Header (hAuthorization)
import Data.ByteString.Base64 (encode)
import Data.ByteString.Char8 (pack, append)

sendRequestWithBasicAuth :: String -> String -> String -> IO (Response ByteString)
sendRequestWithBasicAuth url username password = do
    manager <- newManager defaultManagerSettings
    let auth = Data.ByteString.Char8.pack $ username ++ ":" ++ password
        encodedAuth = encode auth
        headers = [(hAuthorization, Data.ByteString.Char8.append "Basic " encodedAuth)]
    initialRequest <- parseRequest url
    let request = initialRequest { method = "GET", requestHeaders = headers }
    response <- httpLbs request manager
    return response

Musteroutput: Wenn alles klappt, bekommst du die Antwort des Servers. Bei einem Fehler bekommst du eine entsprechende Fehlermeldung.

Tiefgang

Historisch kommt die Basisauthentifizierung aus den frühen Tagen des Webs; es ist ein einfacher Mechanismus, der schon seit HTTP/1.0 existiert. Moderne Alternativen wie OAuth bieten stärkere Sicherheit und mehr Flexibilität. Die Implementierung in Haskell ist dank der vorhandenen Bibliotheken recht einfach, aber sie birgt das Risiko, dass unverschlüsselte Zugangsdaten abgefangen werden, falls sie nicht über HTTPS gesendet werden.

Siehe auch