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.