Enviando una solicitud http con autenticación básica

Haskell:
Enviando una solicitud http con autenticación básica

Cómo Hacerlo:

Puedes usar http-client y http-client-tls para hacer solicitudes seguras.

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

main :: IO ()
main = do
  manager <- newManager tlsManagerSettings
  
  let auth = "user:password"
      authEncoded = encode (pack auth)
      headers = [(hAuthorization, "Basic " <> authEncoded)]
      
  request <- parseRequest "https://your-api-here.com/resource"
  let requestWithAuth = setRequestHeaders headers request

  response <- httpLbs requestWithAuth manager
  putStrLn $ "Response status code: " ++ (show . statusCode . responseStatus $ response)
  print $ responseBody response

Sample output:

Response status code: 200
"{\"data\":\"Some protected content\"}"

Profundizando:

La autenticación básica es un estándar de HTTP remontándose a los primeros días del web. Aunque ya no es la forma más segura de autenticación debido a que las credenciales van codificadas en Base64 (no cifradas), viene in handy para la comunicación entre servidores confiables o cuando se utiliza sobre HTTPS.

Alternativas más seguras incluyen OAuth y JWT. Pero para pruebas rápidas o entornos controlados, la autenticación básica es simple y directa.

Implementación en Haskell es sencilla gracias a bibliotecas como http-client que manejan las conexiones y autenticación de forma abstracta, permitiendo que te concentres en la lógica de tu aplicación.

Vea También: