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.
См. также
- Документация по HTTPoison: https://hexdocs.pm/httpoison
- Схема базовой аутентификации (RFC 7617): https://tools.ietf.org/html/rfc7617
- Документация модуля
Base
в Elixir: https://hexdocs.pm/elixir/Base.html - Фреймворк авторизации OAuth 2.0: https://oauth.net/2/