Руководство по настройке единого входа Kerberos (SSO)
Обзор
Kerberos — это протокол аутентификации на основе криптографии Этот протокол защищает доступ к приложениям. Он предназначен для обеспечения безопасной аутентификации в незащищенной сети. Ключевая идея Kerberos заключается в аутентификации пользователей и предотвращении передачи паролей через интернет.
Простая интеграция LDAP/Active Directory для WordPress Видео.
Условия Kerberos:
Керберос: Kerberos — это протокол аутентификации, поддерживающий концепцию единого входа (SSO). В случае HTTP поддержка Kerberos обычно обеспечивается с помощью механизма аутентификации "SPNEGO".
Царство Керберос: Административный домен для аутентификации обозначается термином «область». Его цель — определить ограничения на то, когда сервер аутентификации может аутентифицировать пользователя, хост или службу. Это не означает, что пользователь и служба должны принадлежать к одной и той же области для того, чтобы произошла аутентификация: если два объекта связаны доверительным соединением, несмотря на принадлежность к разным областям, аутентификация все равно может произойти.
Основной: В системе Kerberos субъект Kerberos представляет собой отдельную личность, которой Kerberos может выдавать билеты для доступа к сервисам, поддерживающим Kerberos. Разделитель "/" используется для разделения различных компонентов, составляющих имена субъектов. Символ "@" может использоваться для идентификации области в качестве последнего элемента имени. Если область не указана, предполагается, что субъект принадлежит к области по умолчанию, заданной в файле krb5.conf.
Клиенты/Пользователи: Процесс, осуществляющий доступ к сервису от имени пользователя. В рамках одной области может быть несколько клиентов или пользователей.
Услуги: Что-то, к чему пользователь хочет получить доступ.
Система единого входа: Единый вход (SSO) — это процедура, позволяющая пользователю войти в систему всего один раз и получить доступ к множеству сервисов после завершения аутентификации. После входа в основной сервис это подразумевает аутентификацию во всех сервисах, к которым пользователь предоставил доступ. SSO имеет ряд преимуществ, одним из которых является избежание утомительного процесса многократной проверки личности с помощью паролей или других систем аутентификации.
GSSAPI: Программы могут получать доступ к службам безопасности через универсальный интерфейс прикладного программирования служб безопасности (GSSAPI), который представляет собой интерфейс прикладного программирования (API). GSSAPI — это стандарт IETF. Сам по себе он не обеспечивает никакой безопасности. Вместо этого реализации GSSAPI предлагаются поставщиками услуг безопасности. Отличительной характеристикой приложений, использующих GSSAPI, является обмен непрозрачными сообщениями (токенами), который скрывает детали реализации от приложений более высокого уровня.
СПНЕГО: Клиент-серверное программное обеспечение использует простой и защищенный механизм согласования GSSAPI, часто называемый «spenego», для согласования выбора технологии безопасности. Когда клиентскому приложению необходимо войти на удаленный сервер, но ни одна из сторон не уверена, какие протоколы аутентификации поддерживает другая, используется SPNEGO. Этот псевдомеханизм использует протокол для определения доступных распространенных механизмов GSSAPI, выбирает один из них, а затем назначает все последующие действия безопасности выбранному механизму.
КДЦ: Центр распространения ключей (KDC) — это сетевая служба, предоставляющая билеты и временные ключи сеанса; или экземпляр этой службы, или хост, на котором она работает. KDC обрабатывает как первоначальные запросы на билеты, так и запросы на выдачу билетов. Первоначальная часть, отвечающая за выдачу билетов, иногда называется сервером аутентификации (или службой). Часть, отвечающая за выдачу билетов, иногда называется сервером выдачи билетов (или службой).
Протокол аутентификации NTLM:
Доступ клиента к ресурсу в домене Active Directory может быть аутентифицирован с использованием протокола аутентификации «запрос-ответ», известного как Windows NT LAN Manager (NTLM). Когда клиент запрашивает доступ к службе, связанной с доменом, служба отправляет клиенту запрос, предписывающий ему использовать свой токен аутентификации для выполнения математической операции, а затем предоставить результат службе. Результат может быть проверен службой или контроллером домена (DC). Служба предоставляет доступ клиенту, если DC или служба подтверждают точность ответа клиента.
Поскольку NTLM позволяет пользователю вводить базовый фактор аутентификации только один раз при входе в систему, он представляет собой своего рода единый вход (SSO).

- СООБЩЕНИЕ О ПЕРЕГОВОРАХ Определяет сообщение NTLM Negotiate, которое отправляется от клиента к серверу. Это сообщение позволяет клиенту указать серверу поддерживаемые им параметры NTLM.
- CHALLENGE_MESSAGE Определяет сообщение-запрос NTLM, которое отправляется с сервера клиенту и используется сервером для запроса у клиента подтверждения своей личности.
- AUTHENTICATE_MESSAGE Определяет сообщение аутентификации NTLM, которое отправляется клиентом на сервер после обработки запроса CHALLENGE_MESSAGE клиентом.
Примечание: В зависимости от конфигурации клиента и сервера, в системе аутентификации Windows используется либо протокол аутентификации Kerberos, либо протокол аутентификации NTLM.
Протокол аутентификации Kerberos:

- Сообщение А: Ключ сессии клиента/TGS зашифрован с использованием секретного ключа клиента/пользователя.
- Сообщение B: Билет, выдающий билет (Ticket-Granting-Ticket), зашифрован с использованием секретного ключа TGS.
- Сообщение C: Состоит из TGT из сообщения B и идентификатора запрашиваемой услуги.
- Сообщение D: Аутентификатор зашифрован с использованием ключа сессии Client/TGS.
- Сообщение E: Клиент-серверный билет шифруется с использованием секретного ключа сервиса.
- Сообщение F: Ключ сессии клиент/сервер зашифрован с помощью ключа сессии клиент/TGS.
- Сообщение G: Новый аутентификатор, который включает идентификатор клиента, метку времени и шифруется с помощью ключа сессии клиент/сервер.
- Сообщение H: Временная метка, полученная из аутентификатора клиента, зашифрована с использованием ключа сессии клиент/сервер.
Единый вход Kerberos в Ubuntu/Debian:
Необходимые условия:
- Служебная учетная запись / Учетная запись пользователя в Active Directory.
- Для пароля учетной записи необходимо установить следующий пароль: Срок действия не истёк.
Шаг 1: Создайте файл Keytab на контроллере домена Active Directory:
- На контроллере домена Active Directory откройте командную строку в режиме администратора и выполните следующую команду для создания файла Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Примечание: Обеспечивать ПРИМЕР.COM Должно быть написано заглавными буквами. Если пользователь с SPN уже существует, используйте этого пользователя вместо создания нового. Принцип Kerberos чувствителен к регистру. Пожалуйста, проверьте различия в написании заглавными и строчными буквами перед выполнением команды keytab.
- Ниже перечислены компоненты команды.
| Имя хоста сервера: | Это имя хоста сайта, размещенного на сервере. |
| EXAMPLE.COM: | Это доменное имя Active Directory. |
| Имя пользователя: | Это служебная учетная запись в Active Directory. |
| Пароль: | Это пароль от учетной записи службы, указанной выше. |
| Путь: | Путь к локальному расположению файла keytab (например, C:\Temp\spn.keytab). |
Примечание: Приведённая выше команда создаёт файл keytab. Его необходимо разместить на клиентском сервере, где размещён ваш сайт WordPress. Пользователь, запускающий Apache, должен иметь полный доступ к этому файлу. У пользователя должны быть права доступа к файлу keytab.
- Откройте «Пользователи и компьютеры Active Directory» и в верхнем меню выберите Просмотреть >> Расширенные функции.
- Откройте учетную запись службы и перейдите на вкладку редактора атрибутов, затем найдите... ServicePrincipalName для проверки записи SPN.
- Перейдите в Делегация меню.
- Выбрать Доверьте этому пользователю делегирование прав любой службе (только Kerberos).

- Нажмите Применить.
- Скопируйте Книга файл с контроллера домена Active Directory на веб-сервер, размещенный на Apache.
- Предоставьте права доступа к файлу keytab Kerberos:
chmod 644 etc/apache2/spn.keytabШаг 2: Установите клиентские библиотеки Kerberos на веб-сервере:
- Для установки клиентских библиотек Kerberos используйте следующую команду в терминале.
sudo apt-get install krb5-user
Шаг 3: Установите модули для Apache:
Примечание: В последних версиях Ubuntu/Debian... mod_auth_kerb устарела и заменена на mod_auth_gssapi.
- В наличии два модуля Apache, но установить достаточно одного из них:
1. модуль mod-auth-gssapi для apache.
2. Модуль mod_auth_kerb для Apache. (устарел)
1. Установите модуль mod-auth-gssapi для Apache:
- Используйте следующую команду для установки libapache2-mod-auth-gssapi модуль для Apache в системах на базе Debian:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Установите модуль mod_auth_kerb для Apache (устаревший):
- Для установки модуля auth_kerb для Apache в системах на базе Debian используйте следующую команду:
sudo apt-get install libapache2-mod-auth-kerb- После установки модуля auth_kerb его необходимо включить с помощью следующей команды.
a2enmod auth_kerb- После включения, Перезапустите Apache вступить в силу.
Шаг 4: Настройте домен Active Directory в файле конфигурации Kerberos:
- Откройте и отредактируйте krb5.conf .
Путь к файлу krb5.conf для Linux следующий: C:/etc/krb5.conf а для других систем на базе UNIX это c:/etc/krb5/krb5.conf - Добавьте следующий фрагмент конфигурации в файл конфигурации. krb5.conf файл в указанном разделе:
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Примечание: Заменить Контроллер домена AD IP/DNS с вашим IP/DNS адрес. Убедитесь ПРИМЕР.COM Должно быть написано заглавными буквами.
Заменить ПРИМЕР.COM укажите имя домена Active Directory и убедитесь, что порт 88 на контроллере домена AD доступен с этого сервера.
- Сохраните файл.
Шаг 5: Настройка единого входа Kerberos для каталога сайта:
- Отредактируйте навязанный файл конфигурации виртуального хоста, который хранится в указанном месте. /etc/apache2/sites-enabled directory или файл виртуального хоста по умолчанию с именем 000-default.conf
Примечание: Добавьте следующий раздел в каталог в соответствии с используемым модулем Apache. Например: "mod_auth_kerb" or "mod_auth_gssapi".
- 1. Добавьте следующий раздел в каталог сайта для mod_auth_gssapi.
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
OR
- 2. Добавьте следующий раздел в каталог сайта для mod_auth_kerb (Устаревшее).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
Примечание: Обеспечивать ПРИМЕР.COM Должно быть написано заглавными буквами.
Ниже перечислены компоненты указанной выше конфигурации:
| EXAMPLE.COM: | Это домен Active Directory, настроенный в файле krb5.conf. |
| ПУТЬ К KEYTAB: | Доступный путь к файлу keytab на этом сервере: (etc/spn.keytab) |
- После выполнения этих настроек для вступления изменений в силу необходимо перезапустить Apache.
Примечание: После завершения настройки параметров, нажмите здесь. для настройки браузеров для единого входа Kerberos.
Для проверки конфигурации единого входа Kerberos/NTLM, нажмите здесь..
Для устранения любой ошибки, пожалуйста, нажмите здесь..
Настройка Kerberos в RHEL/CentOS:
Шаг 1: Создайте файл Keytab на контроллере домена Active Directory:
- На контроллере домена Active Directory откройте командную строку в режиме администратора и выполните следующую команду для создания файла Keytab.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab -crypto ALL
Примечание: Обеспечивать ПРИМЕР.COM Текст должен быть написан заглавными буквами. Принцип Kerberos чувствителен к регистру. Пожалуйста, проверьте различия в написании заглавными и строчными буквами перед запуском команды keytab.
- Ниже перечислены компоненты команды.
| Имя хоста сервера: | Это имя хоста сайта, размещенного на сервере. |
| EXAMPLE.COM: | Это доменное имя Active Directory. |
| Имя пользователя: | Это служебная учетная запись в Active Directory. |
| Пароль: | Это пароль от учетной записи службы, указанной выше. |
| Путь: | Путь к локальному расположению файла keytab (например, C:\Temp\spn.keytab). |
Примечание: Приведенная выше команда создает файл keytabЭтот файл необходимо разместить на клиентском сервере, где размещен ваш сайт WordPress. Пользователь, запускающий Apache, должен иметь полный доступ к этому файлу. Пользователь должен иметь права доступа к файлу keytab.
- Скопируйте файл Keytab от контроллера домена Active Directory к веб-серверу, размещенному на Apache.
- Предоставьте права доступа к файлу keytab Kerberos:
chmod 644 etc/httpd/spn.keytabШаг 2: Установите клиентские библиотеки Kerberos на веб-сервере:
- Для установки клиентских библиотек Kerberos используйте следующую команду в терминале.
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Примечание: В последних версиях CentOS... mod_auth_kerb устарела и заменена на mod_auth_gssapi.
Шаг 3: Установите модули для Apache:
Примечание: В последних версиях Ubuntu/Debian... mod_auth_kerb устарела и заменена на mod_auth_gssapi.
- В наличии два модуля Apache, но установить достаточно одного из них:
1. модуль mod-auth-gssapi для apache.
2. Модуль mod_auth_kerb для Apache (устарел).
1. Установите модуль mod-auth-gssapi для Apache:
- Используйте следующую команду для установки модуль libapache2-mod-auth-gssapi для Apache в системах на базе Debian:
sudo apt-get -y install libapache2-mod-auth-gssapiOR
2. Установите модуль mod_auth_kerb для Apache (устаревший):
- Используйте следующую команду для установки модуль auth_kerb для Apache на системах на базе Red Hat. (Для последних версий RHEL используйте модуль mod-auth-gssapi)
yum install mod_auth_kerbШаг 4: Настройте домен Active Directory в файле конфигурации Kerberos:
- Откройте и отредактируйте krb5.conf .
Путь к файлу krb5.conf для RHEL находится по адресу C:/etc/krb5.conf - Добавьте следующий фрагмент конфигурации в файл конфигурации. krb5.conf файл в указанном разделе:
- Перейдите в [libdefaults] Добавьте в этот раздел следующее:
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
- Перейдите в [царства] Добавьте в этот раздел следующее:
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
- Перейдите в [область_домена] Добавьте в этот раздел следующее:
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Примечание: Заменить КОНТРОЛЛЕР ДОМЕНА AD IP/DNS с вашим IP-адресом/DNS-адресом. Убедитесь, что EXAMPLE.COM Должно быть написано заглавными буквами.
Заменить ПРИМЕР.COM укажите имя домена Active Directory и убедитесь, что порт 88 на контроллере домена AD доступен с этого сервера.
- Сохраните файл.
Шаг 5: Настройте домен Active Directory в файле конфигурации Kerberos:
- Отредактируйте навязанный файл конфигурации хоста. /etc/httpd/conf/httpd.conf
- Добавьте следующий раздел в каталог сайта для mod_auth_gssapi
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
OR
- Добавьте следующий раздел в каталог сайта для mod_auth_kerb (Устаревшее).
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
- Ниже перечислены компоненты указанной выше конфигурации:
| ПУТЬ К KEYTAB | Доступный путь к файлу keytab на этом сервере: (etc/apache2/spn.keytab) |
| "/placeholder" | Путь к корневому каталогу документа |
- После выполнения этих настроек для вступления изменений в силу необходимо перезапустить Apache.
Примечание: После завершения настройки параметров, нажмите здесь. для настройки браузеров для единого входа Kerberos.
Для проверки конфигурации единого входа Kerberos/NTLM, нажмите здесь..
Для устранения любой ошибки, пожалуйста, нажмите здесь..
Единый вход (SSO) с аутентификацией Windows на сервере IIS:
- Откройте командную строку в Режим администратора.
- Выполните следующую команду для добавления. Имя участника службы (SPN) для учетной записи сервиса.
Примечание: Предположим, что веб-сайт должен отвечать по адресам http://machinename и http://machinename.domain.com. Необходимо указать эти адреса в атрибуте SPN учетной записи службы.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>Пример: C:\Users\Administrator> setspn -S HTTP/machinename.domain.com service_account
Примечание: "machinename.domain.com" здесь — это имя компьютера. Убедитесь, что оно доступно на сервере Windows, на котором запущена служба Active Directory.
- Проверьте правильность настроек, выполнив следующую команду:
setspn -l domain or service_accountПример: C:\Users\Administrator> setspn -l service_account или C:\Users\Administrator> setspn -l domain_name

- В результате должен быть указан список. http/machinename.domain.com
- Откройте «Пользователи и компьютеры Active Directory» и в верхнем меню выберите Просмотреть >> Расширенные функции.
- Откройте учетную запись службы и перейдите в... редактор атрибутов вкладка, перейдите к ServicePrincipalName проверить Вход SPN.
- Перейдите в Делегация меню.
- Выбрать Доверьте этому пользователю делегирование прав любой службе (только Kerberos).

- Нажмите Применить.
- Откройте приложение Диспетчер IIS и щелкните по веб-сайту, для которого вы хотите включить аутентификацию Windows.
- Дважды нажмите Аутентификация.

- В разделе «Аутентификация» вы увидите, что по умолчанию включена только анонимная аутентификация. IIS всегда пытается выполнить анонимную аутентификацию, поэтому... Отключить анонимную аутентификацию и Включить аутентификацию Windows.

- Щелкните правой кнопкой мыши на Проверка подлинности Windows и нажмите на Провайдеры.

- Появится следующее окно. Убедитесь, что "Вести переговоры" находится на вершине списка поставщиков услуг.

Примечание: По умолчанию доступны два провайдера: Negotiate и NTLM. Negotiate — это контейнер, использующий Kerberos в качестве первого метода аутентификации, и если аутентификация не удаётся, используется NTLM. Поэтому необходимо, чтобы Negotiate стоял первым в списке провайдеров.
- Нажмите на Ok , чтобы закрыть окно.
- Чтобы настроить пул приложений IIS для запуска из созданной учетной записи SPN, щелкните по... Пулы приложений чтобы открыть окно «Пулы приложений».
- Щелкните правой кнопкой мыши по домену и из списка выберите нужный домен. Дополнительные настройки.

- В окне «Расширенные настройки» в разделе «Модель процесса» щелкните по... Личность.

- В разделе «Идентификатор пула приложений» выберите Пользовательская учетная запись и нажмите на набор кнопка для установки идентификатора.
- Измените его из Идентификатор пула приложений в \.
Пример: domain.com\service_account

- Перейдите на сайт Редактор конфигурации.

- В раскрывающемся списке выберите system.webServer > безопасность > аутентификация > windowsAuthentication.

- Изменить установить useAppPoolCredentials в значение True. и установить useKernelMode в False.
Примечание: Установка параметра useAppPoolCredentials в значение True означает, что мы разрешаем IIS использовать учетную запись домена для расшифровки билета Kerberos от клиентов.
- Нажмите Применить.
- Перезапустите сервер IIS.
- Проверить использование аутентификации Kerberos на веб-сайте можно, отслеживая HTTP-трафик с помощью Fiddler.
Запустите Fiddler и откройте браузер, чтобы перейти на нужный веб-сайт. Найдите строку с адресом веб-сайта в левой части окна. Выберите вкладку «Проверить» в правой части окна. Из строки «Заголовок авторизации (Negotiate) содержит билет Kerberos» очевидно, что для аутентификации на веб-сайте IIS использовался Kerberos.

Примечание: После завершения настройки параметров, нажмите здесь. для настройки браузеров для единого входа Kerberos.
Для проверки конфигурации единого входа Kerberos/NTLM, нажмите здесь..
Для устранения любой ошибки, пожалуйста, нажмите здесь..
Единый вход (SSO) с Apache на сервере Windows XAMPP:
- Откройте командную строку в Режим администратора.
- Выполните следующую команду для добавления. Имя участника службы (SPN) для учетной записи сервиса.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>Пример: C:\Users\Administrator> setspn -S HTTP/machinename.domain.com service_account
Примечание:"machinename.domain.com" здесь — это имя компьютера. Убедитесь, что оно доступно на сервере Windows, на котором запущена служба Active Directory.
- Проверьте правильность настроек, выполнив следующую команду:
setspn -l domain\service_account- В результате должен быть указан список. http/machinename.domain.com
- Откройте «Пользователи и компьютеры Active Directory» и в верхнем меню выберите Просмотреть >> Расширенные функции.
- Откройте учетную запись службы и перейдите в... редактор атрибутов вкладка, перейдите к ServicePrincipalName проверить Вход SPN.
- Перейдите в Делегация меню.
- Выбрать Доверьте этому пользователю делегирование прав любой службе (только Kerberos).

- Нажмите Применить.
- Кликните сюда для загрузки модуля Apache.
- Скопируйте mod_authnz_sspi.so от Apache24 > модули и поместите эту папку в каталог модулей (C:\xampp\apache\modules).
- Скопируйте sspipkgs.exe файл из Apache24 -> bin поместите эту папку в папку bin вашего XAMPP Apache (.....\xampp\apache\bin) на вашем веб-сервере.
- Откройте файл httpd.conf (.....\xampp\apache\conf) и вставьте следующую строку кода в раздел LoadModule.
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so- Убедитесь, что следующие модули раскомментированы:
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so- Кроме того, убедитесь, что включить расширение LDAP.
- Откройте файл httpd.conf из (.....\xampp\apache\conf\httpd.conf).
Перейдите по ссылке и вставьте следующие строки после #Require all grants.
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
- Перезапустите Сервер Apache.
Примечание: После завершения настройки параметров, нажмите здесь. для настройки браузеров для единого входа Kerberos.
Для проверки конфигурации единого входа Kerberos/NTLM, нажмите здесь..
Для устранения любой ошибки, пожалуйста, нажмите здесь..
Настройка браузеров для единого входа Kerberos:
Примечание: Конфигурация на стороне клиента позволяет соответствующему браузеру использовать SPNEGO для согласования аутентификации Kerberos. Необходимо убедиться, что браузер в системе конечного пользователя настроен на поддержку аутентификации Kerberos.
Общая настройка единого входа Kerberos для всех браузеров:
- Перейдите в Панель управления и нажмите на Сеть и Интернет >> Параметры интернета.
- Откроется окно «Свойства интернета». Нажмите на Безопасность >> Локальная интранет-сеть >> Сайты.

- После этого нажмите на Кнопка «Дополнительно».

- В Добавить этот сайт в зону В этом разделе укажите URL-адрес веб-сайта, на который вы хотите войти с помощью единого входа (SSO).

- Нажмите Инструменты > Параметры интернета > Безопасность > Локальная интранет-сеть > Пользовательский уровень.
- Прокрутите вниз до раздела «Параметры аутентификации пользователя» и выберите Автоматический вход в систему возможен только в зоне интранета..

- Нажмите на Ok Нажмите кнопку, а затем перезапустите браузер.
После выполнения вышеуказанных настроек вам не потребуется настраивать параметры браузеров Internet Explorer, Google Chrome и Apple Safari.
- Internet Explorer
- Google Chrome
- Mozilla Firefox
- Apple Safari
Проверьте конфигурацию единого входа Kerberos/NTLM:
Синхронизация времени:
Протокол Kerberos требует, чтобы время клиента и сервера совпадало: если системные часы клиента не совпадают с часами сервера, аутентификация завершится неудачей. Самый простой способ синхронизировать системные часы — использовать сервер сетевого времени (NTP).
Проверить с помощью команд:
Для проверки конфигурации keytab и Kerberos можно выполнить следующие команды:
- Клист: Команда klist отображает содержимое кэша учетных данных Kerberos или таблицы ключей. С помощью этой команды вы можете проверить, получили ли вы действительный билет или нет.
- klist -t -k etc/apache2/spn.keytab: Чтобы вывести список всех записей в таблице ключей etc/apache2/spn.keytab с указанием временных меток.
- klist -ek /etc/apache2/spn.keytab: Отображает тип шифрования для ключа сессии и билета, а также перечисляет записи в таблице ключей.
- kinit -V -kt /etc/apache2/spn.keytab -p HTTPS/webserver.yourdomain.com @ВАШДОМЕН.COM: Проверьте аутентификацию Kerberos с помощью файла keytab.
- kdestroy -A: В Linux вы можете использовать эту команду для сброса любого токена Kerberos на вашем локальном компьютере. Эта команда уничтожит ваш предыдущий билет Kerberos.
- klist purge: В Windows вы можете использовать эту команду для сброса любого токена Kerberos на вашем локальном компьютере. Команда уничтожит ваш предыдущий билет Kerberos.
- KRB5_TRACE=/dev/stdout kinit -kt /etc/krb5.keytab HTTP/≶Server Host Name>: Вы можете использовать эту команду на своем веб-сервере Linux, чтобы получить билет Kerberos из файла keytab и получить подробную информацию для отладки процесса аутентификации Kerberos, включив трассировку Kerberos.
Тестовая конфигурация:
- Для проверки конфигурации SSO создайте test.php файл в корневом каталоге WordPress.
- Введите следующую строку:
<?php
var_dump($_SERVER);
?>
- Сохраните файл и откройте его в веб-браузере. Вы увидите... $_SERVER содержимое.
- Ищи "REMOTE_USER"и оно должно содержать имя текущего пользователя, вошедшего в систему."
Примечание: Пожалуйста, удалите test.php файл после проверки вашей конфигурации. Поскольку он содержит важную информацию.
Аутентификация Kerberos в нескольких доменах:
- Создайте отдельные файлы Keytab для каждого домена и объедините их с помощью инструмента ktutil:
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
- Проверьте слияние с помощью следующей команды:
klist -k spn.keytab
- Настройте файл krb5.conf:
Файл krb5.conf содержит информацию о конфигурации Kerberos, включая серверы KDC и администрирования для одного или нескольких доменов Kerberos, значения по умолчанию для текущего домена и сопоставление имен хостов с доменами Kerberos. В случае нескольких доменов файл krb5.conf следует обновить информацией о различных доменах/доменах для корректной работы аутентификации.
Поиск и устранение неисправностей:
Ниже приведены наиболее распространенные сообщения об ошибках:
-
kinit: Pre-authentication failed: Invalid argument while getting initial credentialsТип шифрования rc4, который по-прежнему широко используется в средах Active Directory, уже отключен по умолчанию в RHEL-8.3. Вы можете обратиться к приведенному ниже примеру, чтобы добавить тип шифрования в файл keytab.
or
GSS ERROR gss_accept_sec_context(): [Unspecified GSS failure. Minor code may provide more information (Request ticket server HTTP/<Server Host Name>@EXAMPLE.COM kvno x enctype rc4-hmac found in keytab but cannot decrypt ticket)]
Пример:ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
Установите Шифрование Kerberos AES 256 бит поддерживается пользователем "Счет" настройки.

-
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)Kerberos очень чувствителен ко времени. Убедитесь, что часы на хостах Active Directory и веб-сервера совпадают. Настройте один из контроллеров домена в качестве NTP-сервера для клиентских компьютеров.
or
kinit: krb5_get_init_creds: Too large time skew -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied)Неверные права доступа к файлу /etc/apache2/spn.keytab в файловой системе, то есть он недоступен для чтения пользователем Linux веб-сервера.
Для изменения прав доступа к файловой системе используйте команду `chmod 644 /etc/apache2/spn.keytab`. -
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).Отсутствует субъект службы (возможно, HTTP/webserver.yourdomain.com@YOURDOMAIN.COM) в файле /etc/apache2/spn.keytab. -
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)Веб-сайт находится вне зоны «Локальная интранет» в Internet Explorer или Internet Explorer настроен неправильно; см. раздел «Используется NTLM вместо Kerberos для аутентификации». -
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).Ошибка kvno или пароль машины в файле etc/apache2/spn.keytab. Пересоздайте файл keytab, используя правильную информацию.
Если у вас возникла проблема с локальным кэшем билетов Kerberos на вашем рабочем компьютере, используйте Kerbtray.exe для очистки кэша билетов и снова откройте веб-сайт в Internet Explorer. -
kinit: KDC has no support for encryption type while getting initial credentialsИзмените тип шифрования по умолчанию в разделе libdefaults файла /etc/apache2/krb5.conf. Добавьте в конфигурацию параметры default_tgs_enctypes и default_tkt_enctypes. -
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIREDВаша учетная запись Kerberos больше не активна. Необходимо обновить учетные данные.
or
kinit: Client's entry in database has expired while getting initial credentials -
kinit: krb5_cc_get_principal: No credentials cache file foundПри выполнении команды kinit был выбран неверный домен. Проверьте доменное имя, оно должно быть написано заглавными буквами: EXAMPLE.COM
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND -
kinit : Cannot find KDC for requested realm while getting initial credentialsФайл /etc/apache2/krb5.conf не содержит доменное имя Active Directory (.EXAMPLE.COM). -
kinit: Preauthentication failed while getting initial credentialsПричина: ошибочный ввод пароля Kerberos. Пожалуйста, попробуйте еще раз. Или из-за настроек системных часов. Убедитесь, что команда date возвращает время с точностью до 5 минут. -
kinit: Client not found in Kerberos database while getting initial credentialsИмя вашего Kerberos-субъекта может отличаться от имени пользователя в вашей локальной системе. -
kinit: Client's entry in database has expiredВам необходимо сменить пароль Kerberos.
Часто задаваемые вопросы (FAQ)
Дополнительные часто задаваемые вопросы ➔Можно ли использовать существующего пользователя LDAP в качестве субъекта службы Kerberos?
Да, вы можете использовать существующего пользователя LDAP в качестве субъекта службы Kerberos. Однако у этого пользователя должен быть установлен пароль, срок действия которого никогда не истечет. Пожалуйста, убедитесь, что эта учетная запись не используется никаким другим пользователем, поскольку приложение использует эту учетную запись в качестве субъекта службы Kerberos и соответствующий файл keytab для получения билета Kerberos.
Что такое «клиент Kerberos», «сервер Kerberos» и «сервер приложений»?
Вся аутентификация в Kerberos происходит между клиентами и серверами. Поэтому любой субъект, получающий сервисный билет для службы Kerberos, в терминологии Kerberos называется «клиентом Kerberos». Пользователи часто считаются клиентами, но любым субъектом может быть клиент.
Центр распределения ключей, или KDC, обычно называют «сервером Kerberos». KDC реализует как службу аутентификации (AS), так и службу выдачи билетов (TGS). Каждый пароль, связанный с каждым субъектом, хранится в KDC. Поэтому крайне важно, чтобы KDC был максимально безопасным.
Термин «сервер приложений» часто относится к программному обеспечению, использующему Kerberos, которое клиенты применяют для взаимодействия и аутентификации с помощью билетов Kerberos. Примером сервера приложений является демон Telnet Kerberos.
Почему мне предлагается ввести свои учетные данные?
Это происходит, когда для аутентификации используется протокол NTLM вместо Kerberos.
Это может произойти по нескольким причинам:
- Проверьте, используете ли вы для доступа к веб-сайту компьютер, подключенный к домену.
- Убедитесь, что время синхронизировано между LDAP-сервером и веб-сервером.
- Убедитесь, что в настройках вашего браузера и параметрах интернета включена поддержка единого входа Kerberos.
- Если проблема сохраняется, пожалуйста, свяжитесь с нами.
Статьи по теме
Спасибо за ваш ответ. Мы свяжемся с вами в ближайшее время.
Что-то пошло не так. Пожалуйста, отправьте запрос ещё раз.


