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

Клиент elles-dns-cli использует Kerberos/SPNEGO для аутентификации на сервере elles-dns-api. Все операции требуют действительного билета Kerberos TGT (Ticket Granting Ticket).

Предварительные требования

Перед использованием утилиты необходимо получить Kerberos-билет:

kinit <user>@<REALM>
klist

Автоматическое определение ccache

Клиент ищет файл Kerberos credential cache (ccache) в следующем порядке:

  1. Переменная окружения KRB5CCNAME.

  2. Файл ~/.krb5cc в домашней директории пользователя.

  3. Файл /tmp/krb5cc_<uid>, где <uid> — числовой идентификатор пользователя.

Автоматическое определение krb5.conf

Конфигурационный файл Kerberos (krb5.conf) ищется в следующем порядке:

  1. Переменная окружения KRB5_CONFIG.

  2. Системный файл /etc/krb5.conf.

  3. Альтернативный путь /usr/local/samba/private/krb5.conf.

Указание учетных данных с помощью флага --username

По умолчанию клиент использует текущий TGT (значение current). Для явного указания учетных данных используйте флаг:

dnscli ZoneList --username user@EXAMPLE.COM

Поддерживаемые форматы указания имения пользователя:

  • current — использовать TGT из текущего ccache (по умолчанию):

    dnscli PartitionList --server dns-api-server.example.com
  • <user>@<REALM> — UPN (User Principal Name) пользователя:

    dnscli ZoneList --server dns-api-server.example.com --username alice@EXAMPLE.COM
  • <FQDN> — полное доменное имя (FQDN) пользователя в домене (например, user.example.com), если оно зарегистрировано как SPN в службе каталогов:

    dnscli RecordAdd --name www.example.com --type A --data "192.168.1.10" --server dns-api-server.example.com --username alice.example.com
  • <IP> — IP-адрес пользователя (например, 10.1.1.10), если он зарегистрирован как SPN в службе каталогов:

    dnscli ZoneInfo --name example.com --server 10.1.1.10 --username 10.1.1.10
  • NetBIOS-имя — короткое имя пользователя в домене (например, DOMAIN\\user или user), если оно зарегистрировано как SPN в службе каталогов:

    • указание домена и имени пользователя:

      dnscli PartitionList --server dns-api-server.example.com --username EXAMPLE\\alice
    • указание только имени пользователя (если домен автоматически разрешается из krb5.conf):

      dnscli RecordQuery --zonename example.com --name www --type A --server dns-api-server.example.com --username alice

Особенности и ограничения:

  • флаг --username передает указанное значение напрямую в Kerberos-клиент для получения сервисного билета;

  • сервер elles-dns-api ожидает SPN в формате HTTP/<server> и не проверяет формат имени пользователя;

  • разрешение имен (FQDN, IP, NetBIOS) происходит на уровне ОС и KDC, а не в клиенте;

  • клиент просто использует указанную строку как имя для запроса билета, и если KDC разрешает его в SID, аутентификация проходит.

Проверка доступа

Для проверки работоспособности аутентификации выполните:

dnscli PartitionList --server dns-api-server.example.com

Если ответ содержит список партиций, аутентификация успешна.

Если возвращается ошибка 401, проверьте наличие TGT и корректность настроек в krb5.conf.

Ошибки аутентификации

Код Причина

401

Отсутствует TGT, неверный ccache, истек срок действия билета

403

TGT есть, но пользователь не имеет прав на выполнение операции

500

Сервер не может проверить билет (некорректный SPN, проблема с KDC)

Обновлено: