# README
Digest Authentication Server
Этот сервер на основе Go реализует механизм Digest аутентификации, используя MD5 хеширование для безопасного доступа.
Описание
Digest аутентификация — это метод аутентификации, который использует MD5 хеширование для защиты пароля при передаче. Сервер генерирует случайный nonce
и проверяет хеш запроса от клиента для подтверждения подлинности.
Основные компоненты
- generateNonce — генерирует случайное значение
nonce
, которое отправляется клиенту в процессе аутентификации. - calculateHash — вычисляет MD5 хеш, используя имя пользователя, пароль,
nonce
, HTTP метод и URI. - digestAuth — основной обработчик запроса, который проверяет заголовок
Authorization
и сравнивает ответ клиента с ожидаемым.
Структура проекта
main.go
— Основной файл с определением обработчиков запросов и логикой Digest аутентификации.
Установка
Требования
- Go 1.18+
Шаги для установки
-
Клонируйте репозиторий:
git clone https://github.com/yourcompany/digest-auth-server.git
-
Перейдите в директорию проекта:
cd digest-auth-server
-
Установите зависимости (если требуется):
go mod tidy
-
Запустите сервер:
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.