Enviando uma requisição HTTP com autenticação básica

Elm:
Enviando uma requisição HTTP com autenticação básica

How to:

import Http
import Base64

type alias Credentials =
    { username : String
    , password : String
    }

-- Encode your username and password
encodeCredentials : Credentials -> String
encodeCredentials creds =
    "Basic " ++ (Base64.encode (creds.username ++ ":" ++ creds.password))

-- Create the Authorization header
authorizationHeader : Credentials -> Http.Header
authorizationHeader creds =
    Http.header "Authorization" (encodeCredentials creds)

-- Send an HTTP request with Basic Auth
sendRequestWithBasicAuth : Credentials -> String -> (Result Http.Error String -> msg) -> Cmd msg
sendRequestWithBasicAuth creds url toMsg =
    Http.request
        { method = "GET"
        , headers = [ authorizationHeader creds ]
        , url = url
        , body = Http.emptyBody
        , expect = Http.expectString toMsg
        , timeout = Nothing
        , tracker = Nothing
        }

-- Exemplo de uso
creds = Credentials "user" "password"
url = "https://some-protected-resource.com"

Deep Dive

Autenticação básica é um método antigo, introduzido pelo HTTP/1.0. Apesar de sua simplicidade, hoje em dia é considerada insegura se usada sem HTTPS, pois as credenciais são enviadas como texto puro codificado em Base64. Alternativas modernas incluem OAuth e tokens JWT. No Elm, a autenticação básica é realizada adicionando o cabeçalho de autorização a uma requisição. Vale notar que o módulo Http do Elm gerencia os detalhes de baixo nível da rede e o Base64 garante a codificação correta das credenciais.

See Also