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 responseMusteroutput: 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
- Haskell
http-clientBibliothek: http://hackage.haskell.org/package/http-client - Haskell
base64-bytestringBibliothek: http://hackage.haskell.org/package/base64-bytestring - HTTP Basic Authentication Spezifikation: https://tools.ietf.org/html/rfc7617
- Eine Erklärung modernerer Authentifizierungsmethoden: https://oauth.net/