Общие сведения о Kerberos-аутентификации и особенности реализации в приложении
- Основные понятия и определения
- Механизм аутентификации SPNEGO в SMP
- Принцип поиска логина во внутренней базе данных при прозрачной аутентификации
- Требования к инфраструктуре для использования Kerberos-аутентификации
Основные понятия и определения
Основные понятия и определения:
-
Kerberos — сетевой протокол аутентификации, позволяющий безопасно передавать данные через незащищенные сети для безопасной идентификации.
Также Kerberos — набор бесплатного программного обеспечения от Массачусетского технологического института MIT (Massachusetts Institute of Technology), разработавшего этот протокол. Организация протокола направлена в первую очередь на клиент-серверную модель и обеспечивает взаимную аутентификацию — оба пользователя через сервер подтверждают личности друг друга. Сообщения, отправляемые через протокол Kerberos, защищены от прослушивания и атак повторного воспроизведения.
- Realm — область (домен) аутентификации в инфраструктуре Kerberos. Значение чувствительно к регистру символов.
- SPN (Service Principal Name) — имя участника службы (уникальное имя), по которому идентифицируется экземпляр сервиса. Это способ сопоставить учетную запись Windows, ответственную за запуск экземпляра службы, с сервером и службой
-
UPN (User Principal Name) — логин пользователя, представляет собой имя, сокращенное относительно полного имени пользователя.
Пример: user@domain.ru
- KDC (Key Distribution Center) — сервер аутентификации в инфраструктуре Kerberos. Контроллер домена.
- TGS (Ticket Grant Service) — билет на предоставление доступа к сервису, в нашем случае это билет kerberos на доступ в приложение.
- Keytab — файл, содержащий одну или несколько пар SPN и долговременного ключа шифрования.
Механизм аутентификации SPNEGO в SMP
Описание механизм аутентификации SPNEGO в SMP:
- Пользователь входит в домен под своей учетной записью.
- Пользователь открывает в браузере ссылку на приложение. Браузер отправляет в приложение GET-запрос.
- Приложение возвращает браузеру ответ с кодом 401 и заголовком Authenticate: Negotiate, таким образом приложение инициирует SPNEGO аутентификацию.
- Если браузер настроен на использование прозрачной аутентификации, он понимает, что нужно получить в домене kerberos-билет и предоставить его на проверку приложению. Браузер извлекает из запрошенного адреса имя сервера (hostname) и формирует с помощью него Service Principal Name (SPN). Сформированный SPN отправляется домен-контроллеру (в Kerberos Ticket Granting Service) с помощью запроса билета TGS_REQ для получения kerberos-билета. Если в домене зарегистрирован указанный SPN, домен-контроллер выдает пользователю kerberos-билет для доступа в приложение.
- Браузер отправляет запрошенный kerberos-билет в приложение в заголовке HTTP-запроса.
-
Приложение расшифровывает полученный kerberos-билет, используя долговременный ключ шифрования из keytab-файла.
Приложение извлекает из kerberos-билета имя пользователя и производит поиск пользователя во внутренней базе данных для определения прав.
- Если пользователь найден во внутренней базе данных, приложение возвращает браузеру ответ с кодом 200 и пользователь успешно входит в приложение.
Принцип поиска логина во внутренней базе данных при прозрачной аутентификации
После успешной проверки kerberos-билета от пользователя:
-
Приложение извлекает логин из kerberos-билета, например, user@msk.example.com.
Логин из kerberos-билета соответствует атрибуту sAMAccountName в Active Directory.
-
Приложение производит последовательный поиск нескольких вариантов логина во внутренней базе данных:
- user
- user@MSK.EXAMPLE.COM
- user@MSK
- MSK\user
-
Если поиск завершился успешно и найден ровно один вариант, приложение разрешает вход под найденным пользователем.
Если логин не найден или найдено более одного варианта логина, возвращается ошибка.
Включить или отключить регистронезависимость логинов можно в конфигурационном файле dbaccess.properties (параметр login.casesensitive
Требования к инфраструктуре для использования Kerberos-аутентификации
Требования к инфраструктуре для использования прозрачной аутентификации с использованием протокола Kerberos (дополнение к техническим требованиям):
- Наличие KDC (Key Distribution Center) — сервер аутентификации в инфраструктуре Kerberos, контроллер домена Active Directory под управлением ОС MS Windows Server 2008 R2 и выше;
- Рабочие станции пользователей под управлением ОС MS Windows XP выше;
- Используемый браузер Microsoft Edge, Mozilla Firefox 3.6 и выше, Google Chrome 18,19 и выше;
- Рабочие станции пользователей включены в домен, пользователи используют доменные учетные записи;
- Логины пользователей в системе должны соответствовать логинам в AD (как правило, для этого используется механизм импорта оргструктуры из Active Directory);
- При использовании разветвленной доменной инфраструктуры, в случае если домен пользователя отличается от домена KDC, между доменами должны быть установлены двусторонние доверительные отношения на уровне лесов (Forest Trust).
Для сервера приложения не обязательно:
- иметь доступ до контроллеров домена, если только одновременно не настроена LDAP-аутентификация на форме;
- принадлежать домену, в котором настраивается аутентификация;
- запускаться под доменной учетной записью.
Прозрачная аутентификация может работать на удаленном рабочем столе (пользователь должен войти под доменной учетной записью).