Lähettämässä HTTP-pyyntöä perusautentikoinnilla

Haskell:
Lähettämässä HTTP-pyyntöä perusautentikoinnilla

Kuinka:

Tarvitset http-conduit-paketin HTTP-toimintoihin ja base64-bytestring-paketin tunnistetietojen koodaamiseen. Tuo ne ja käytä applyBasicAuth-funktiota lisätäksesi tunnistetiedot pyyntöösi.

import Network.HTTP.Simple
import Data.ByteString.Char8 (pack)
import Data.ByteString.Base64 (encode)

-- Rakenna perusautentikointiotsikko
let username = "user"
let password = "pass"
let auth = encode $ pack (username ++ ":" ++ password)

-- Luo pyyntösi
request' = parseRequest_ "GET http://example.com/secret"
let request = setRequestHeader "Authorization" ["Basic " <> auth] request'

-- Suorita pyyntö
response <- httpLBS request

-- Käsittele vastaus
print $ getResponseBody response

Tämä tulostaa API-vastauksen, jos tunnistetietosi ovat oikein.

Syventävä tarkastelu

Perusautentikointi on muinaishistoriaa verkkovuosissa; se suunniteltiin 90-luvun alussa, ja se on niin yksinkertainen kuin olla ja voi: base64-koodattu käyttäjänimi:salasana lähetetään otsikossa. Siitä puuttuvat hienot ominaisuudet kuten poletin vanheneminen ja, koska se on salaamaton, sitä tulisi aina käyttää HTTPS-yhteyden yli.

Vaihtoehdot, kuten OAuth, tarjoavat turvallisemman, yksityiskohtaisemman hallinnan. Haskellille kirjastot kuten http-client ja wreq tarjoavat enemmän vaihtoehtoja ja joustavuutta.

Toteutuksessa muista, että tunnistetietoja ei pidä kovakoodata! Käytä tuotannossa ympäristömuuttujia tai turvallista holvia. Ja koska base64-koodaus ei ole salausta (kuka tahansa voi purkaa sen), HTTPS ei ole vain hyvä idea, se on välttämätön.

Katso myös