Надсилання HTTP-запиту з базовою автентифікацією

Elixir:
Надсилання HTTP-запиту з базовою автентифікацією

Як це зробити:

defmodule HTTPClient do
  require Logger

  @url "http://example.com"
  @username "user"
  @password "pass"

  def send_request do
    :httpc.request(
      :get,
      {to_charlist(@url), []},
      [autoredirect: true, 
        headers: ["Authorization": basic_auth_header(@username, @password)]
      ],
      []
    )
  end

  defp basic_auth_header(username, password) do
    "Basic " <> Base.encode64("#{username}:#{password}")
  end
end

# Sample output
{:ok,
 {{'HTTP/1.1', 200, 'OK'},
  [{"content-type", "application/json; charset=utf-8"}],
  '...response body...'}}

Поглиблений огляд

Базова автентифікація — це стара, але проста схема автентифікації. Вона передбачає відправлення імені користувача та паролю з кожним запитом. Еліксир використовує модуль :httpc, який входить до Erlang/OTP, і підтримує базову автентифікацію. При базовій автентифікації потрібно кодувати логін і пароль у форматі Base64.

Є альтернативи безпечніші, як OAuth 2.0, але для простих чи внутрішніх додатків базова автентифікація іноді все ще використовується. Важливо не забувати, що базова автентифікація без HTTPS небезпечна, оскільки логін і пароль можуть бути легко перехоплені.

Дивись також: