Categorygithub.com/awl-s/httpauthorizationdigest
repositorypackage
0.0.0-20241109073013-8eb27a5bba10
Repository: https://github.com/awl-s/httpauthorizationdigest.git
Documentation: pkg.go.dev

# README

Digest Authentication Server

Этот сервер на основе Go реализует механизм Digest аутентификации, используя MD5 хеширование для безопасного доступа.

Описание

Digest аутентификация — это метод аутентификации, который использует MD5 хеширование для защиты пароля при передаче. Сервер генерирует случайный nonce и проверяет хеш запроса от клиента для подтверждения подлинности.

Основные компоненты

  • generateNonce — генерирует случайное значение nonce, которое отправляется клиенту в процессе аутентификации.
  • calculateHash — вычисляет MD5 хеш, используя имя пользователя, пароль, nonce, HTTP метод и URI.
  • digestAuth — основной обработчик запроса, который проверяет заголовок Authorization и сравнивает ответ клиента с ожидаемым.

Структура проекта

  1. main.go — Основной файл с определением обработчиков запросов и логикой Digest аутентификации.

Установка

Требования

  • Go 1.18+

Шаги для установки

  1. Клонируйте репозиторий:

    git clone https://github.com/yourcompany/digest-auth-server.git
    
  2. Перейдите в директорию проекта:

    cd digest-auth-server
    
  3. Установите зависимости (если требуется):

    go mod tidy
    
  4. Запустите сервер:

    go run main.go
    

Сервер будет доступен по адресу http://localhost:8080.

Использование

Digest Аутентификация

Digest аутентификация требует отправки заголовка Authorization в запросе к серверу:

  • Шаг 1: Получите nonce от сервера, отправив запрос без заголовка Authorization.
  • Шаг 2: Сформируйте заголовок Authorization, используя полученные nonce, username, realm, и password.
  • Шаг 3: Отправьте запрос с заголовком Authorization: Digest <response>.

Пример запроса с заголовком Authorization:

curl -H "Authorization: Digest username=\"admin\", realm=\"myRealm\", nonce=\"<nonce>\" response=\"<response>\"" http://localhost:8080

Поля Digest

Некоторые из основных полей заголовка Authorization:

  • username — имя пользователя.
  • realm — область, которую защищает сервер (в данном примере myRealm).
  • nonce — случайное значение, выданное сервером для защиты от повторных атак.
  • response — хеш, который вычисляется клиентом на основе username, realm, password, nonce, метода и URI.

Архитектура

Digest Механизм

Функции generateNonce и calculateHash используются для создания случайного nonce и вычисления ожидаемого ответа на основе username, realm, password, method и uri. Функция digestAuth проверяет заголовок Authorization и сравнивает его с ожидаемым значением.

Безопасность и развертывание

Для продакшн-среды рекомендуется:

  • Переключиться на HTTPS для защиты данных при передаче.
  • Учитывать использование более сильного алгоритма хеширования, поскольку MD5 считается устаревшим.

Лицензия

Этот проект распространяется под лицензией MIT.