Spec-Zone.ru › MySQL Connectors 1.0

6.12.2 Подключение с использованием Kerberos

Kerberos — это протокол взаимной аутентификации сервер-клиент на основе билетов, поддерживаемый MySQL Server (только коммерческие версии).

Поддержка Kerberos в Connector/J реализована с помощью GSS-API, JAAS API и JCA API; поставщики для каждой из этих API должны быть доступны в Java Virtual Machine, на которой работает ваше приложение, использующее аутентификацию Kerberos. Использование поставщиков, отличных от стандартных, может привести к непредсказуемым результатам.

Процесс аутентификации Kerberos

Основное использование аутентификации Kerberos в MySQL заключается в возможности создания подключений без необходимости указывать имя пользователя и пароль в строке подключения. Для этого Connector/J должен быть настроен с настройкой свойства подключения defaultAuthenticationPlugin=authentication_kerberos_client , а затем имя пользователя MySQL может быть извлечено из принципала Kerberos, связанного с кэшированным локально билетом выдачи билетов (TGT). Обратите внимание, что имя пользователя MySQL отличается от принципала Kerberos тем, что не содержит части домена; поэтому Connector/J обрезает все символы в принципе после знака «“@”» и использует его в качестве имени пользователя MySQL.

Если в локальном кэше Kerberos нет TGT, Connector/J использует имя пользователя операционной системы в качестве имени пользователя MySQL. Имя пользователя, указанное в строке подключения, всегда имеет приоритет перед именами, полученными другими способами для имени пользователя MySQL.

Затем имя пользователя MySQL отправляется на сервер MySQL для проверки. Отсутствие пользователя приводит к возврату ошибки сервером. Существующие пользователи могут продолжить процесс аутентификации, и последующий механизм аутентификации зависит от того, как был создан пользователь MySQL:

  • Для пользователей, созданных с помощью плагина аутентификации authentication_kerberos, сервер MySQL отправляет соответствующий домен Kerberos обратно Connector/J, который, в свою очередь, использует его для построения принципала Kerberos, идентифицирующего пользователя на сервере Kerberos. После этого может произойти одно из трёх:

    • Новый построенный принципал Kerberos соответствует принципалу Kerberos, связанному с локально кэшированным TGT; этот TGT затем отправляется на сервер Kerberos для получения необходимого билета службы MySQL, и аутентификация продолжается.

    • Новый построенный принципал Kerberos не соответствует принципалу Kerberos, связанному с локально кэшированным TGT, или локальный кэш Kerberos отсутствует; этот принципал Kerberos, а также пароль, который мог быть указан в строке подключения (или пустая строка, если он не был указан), отправляется на сервер Kerberos для получения сначала валидного TGT, а затем необходимого билета службы MySQL; и аутентификация продолжается.

    • Выбрасывается ошибка, если Connector/J не может получить правильные настройки Kerberos, не может связаться с сервером Kerberos или не может выполнить любой из двух указанных шагов.

  • Для пользователей, определенных с плагином, отличным от authentication_kerberos, сервер запрашивает Connector/J использовать другой метод аутентификации.

Настройки Kerberos на стороне клиента

Для корректной работы с сервером Kerberos, Connector/J требует либо системную настройку Kerberos, либо следующие локальные системные свойства для JVM:

  • -Djava.security.krb5.kdc=[the KDC host name]

  • -Djava.security.krb5.realm=[the default Kerberos realm]

Отладочная информация

Настройка Connector/J для использования аутентификации Kerberos не всегда проста. Включение ведения журнала в внутренних Java-поставщиках может помочь в поиске потенциальных проблем. Это можно сделать, задав следующие системные свойства:

  • -Dsun.security.krb5.debug=true

  • -Dsun.security.jgss.debug=true

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connecting-using-kerberos.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API