Отправка HTTP-запроса с базовой аутентификацией

Elixir:
Отправка HTTP-запроса с базовой аутентификацией

Как это сделать:

Для отправки HTTP-запроса с базовой аутентификацией в Elixir вы можете использовать библиотеку HTTPoison:

# Добавьте HTTPoison в зависимости вашего проекта в файле mix.exs
defp deps do
  [
    {:httpoison, "~> 1.8"}
  ]
end

# Теперь давайте сделаем запрос с базовой аутентификацией

# Выполните `mix deps.get` для загрузки зависимости

# В вашем коде на Elixir
defmodule BasicAuthRequest do
  def send_request do
    # Кодируем учетные данные "username:password" с использованием Base64
    basic_auth =
      "username:password"
      |> Base.encode64()

    # Устанавливаем заголовок Authorization
    headers = [{"Authorization", "Basic #{basic_auth}"}]

    # Отправляем GET-запрос на https://example.com/protected-resource
    HTTPoison.get("https://example.com/protected-resource", headers)
  end
end

# Вызываем функцию
{:ok, response} = BasicAuthRequest.send_request()
IO.inspect(response.status_code)  # Должно быть 200, если аутентификация успешна

Если базовая аутентификация успешна, вы получите статус-код 200. Неудачная аутентификация обычно приводит к 401.

Подробнее

Базовая аутентификация - это часть HTTP, определенная в RFC 7617, которая восходит к самому началу работы Интернета. Она проста, но менее безопасна, чем современные методы, поскольку отправляет учетные данные в каждом запросе (кодированы в base64, а не зашифрованы).

Альтернативы включают:

  • OAuth: Открытый стандарт для делегирования доступа, используемый для предоставления веб-сайтам или приложениям доступа к их информации на других сайтах без передачи им паролей.
  • API ключи: Уникальные идентификаторы, используемые для аутентификации пользователя или программы в запросах API.
  • Bearer Tokens/JWT: Токены безопасности, содержащие все необходимые пользовательские данные для аутентификации пользователя.

С точки зрения реализации, при использовании HTTPoison, мы:

  • Кодируем имя пользователя и пароль в Base64;
  • Включаем эту закодированную строку в заголовок Authorization с префиксом “Basic “;
  • Отправляем запрос на сервер в надежде, что доступ будет предоставлен.

Помните, базовая аутентификация передается в открытом тексте и может быть легко декодирована. Она безопасна только через HTTPS.

См. также