Аутентификация
Клиент elles-dns-cli использует Kerberos/SPNEGO для аутентификации на сервере elles-dns-api. Все операции требуют действительного билета Kerberos TGT (Ticket Granting Ticket).
Предварительные требования
Перед использованием утилиты необходимо получить Kerberos-билет:
kinit <user>@<REALM>
klist
Автоматическое определение ccache
Клиент ищет файл Kerberos credential cache (ccache) в следующем порядке:
-
Переменная окружения
KRB5CCNAME. -
Файл ~/.krb5cc в домашней директории пользователя.
-
Файл /tmp/krb5cc_<uid>, где
<uid>— числовой идентификатор пользователя.
Автоматическое определение krb5.conf
Конфигурационный файл Kerberos (krb5.conf) ищется в следующем порядке:
-
Переменная окружения
KRB5_CONFIG. -
Системный файл /etc/krb5.conf.
-
Альтернативный путь /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, неверный |
403 |
TGT есть, но пользователь не имеет прав на выполнение операции |
500 |
Сервер не может проверить билет (некорректный SPN, проблема с KDC) |
Обновлено: