Spec-Zone.ru › MySQL 9.2

8.4.1.9 Подключаемая аутентификация OpenID Connect

Примечание

Подключаемая аутентификация OpenID Connect является расширением, включённым в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, см. https://www.mysql.com/products/.

MySQL Enterprise Edition поддерживает метод аутентификации, который позволяет пользователям аутентифицироваться на MySQL Server с помощью OpenID Connect, при условии, что соответствующие учетные данные и токены OpenID Connect должным образом сконфигурированы на основе фреймворка OAuth 2.0.

В следующей таблице показаны имена файлов плагина и библиотеки. Название файла может отличаться на вашей системе. Файл должен находиться в каталоге, указанном переменной системы plugin_dir. Сведения об установке см. в разделе Установка подключаемой аутентификации OpenID.

Таблица 8.24 Имена плагинов и библиотек для аутентификации OpenID Connect

Таблица 8.24 Имена плагинов и библиотек для аутентификации OpenID Connect
Плагин или файл Название плагина или файла
Плагин на стороне сервера authentication_openid_connect
Плагин на стороне клиента authentication_openid_connect_client
Файл библиотеки authentication_openid_connect.so, authentication_openid_connect_client.so

Плагин аутентификации OpenID Connect на стороне сервера включен в MySQL Enterprise Edition. Он не включён в дистрибутивы MySQL Community. Плагин на стороне клиента включен во все дистрибутивы, включая дистрибутивы Community. Это позволяет клиентам из любого дистрибутива подключаться к серверу, на котором загружен плагин на стороне сервера.

В следующих разделах содержатся сведения об установке и использовании, специфичные для подключаемой аутентификации OpenID Connect:

  • Предварительные требования для подключаемой аутентификации OpenID Connect

  • Процесс и рабочий процесс OpenID Connect

  • Установка подключаемой аутентификации OpenID

  • Подключение с клиентом

Дополнительную информацию об аутентификации плагинами в MySQL см. в разделе 8.2.17, «Подключаемая аутентификация».

Предварительные требования для подключаемой аутентификации OpenID Connect

Для использования подключаемой аутентификации OpenID Connect для MySQL должны быть выполнены следующие предварительные требования:

  • Пользователь, подключающийся к системе, должен иметь учётную запись в домене поставщика идентификации и иметь средства получения токена.

  • Администратор должен иметь список поставщиков токенов для поддержки, а также их открытые ключи подписи. Администратор также должен иметь идентификатор пользователя из домена поставщика идентификации.

Процесс и рабочий процесс OpenID Connect

Аутентификация OpenID Connect выполняется по этим шагам, где части на стороне сервера и клиента выполняются с помощью плагинов аутентификации authentication_openid_connect и authentication_openid_connect_client соответственно:

  1. Клиент считывает файл токена идентификации. Например, командная строка клиента mysql использует параметр authentication-openid-connect-client-id-token-file с полным путём к файлу токена. Клиент не принимает токен размером более 10 КБ. Каждый коннектор имеет метод для передачи этой информации.

  2. Клиент проверяет, является ли соединение между клиентом и сервером безопасным. Безопасными считаются только подключения TLS, сокета и совместной памяти.

  3. Клиент отправляет токен на сервер после проверки, является ли он валидным JSON Web Token (JWT).

  4. Сервер проверяет, является ли соединение между клиентом и сервером безопасным, и получает токен.

  5. Сервер декодирует и проверяет токен:

    1. Проверяет, является ли токен валидным JWT.

    2. Заголовки извлекаются с использованием алгоритма шифрования, который использует асимметричный алгоритм RS256.

    3. Платежная нагрузка декодируется, и выполняются проверки для определения, выполнены ли соответствующие критерии для успешного входа в систему.

  6. Критерии успешного входа в систему:

    • Значение утверждения sub токена идентификации должно быть таким же, как значение пользователя в строке аутентификации.

    • Значение identity_provider в строке аутентификации должно быть одним из значений identity_provider, заданных в конфигурации.

    • Значение утверждения iss токена идентификации должно быть равно значению identity_provider, заданному в конфигурации.

    • Время истечения срока действия токена идентификации должно быть больше текущего времени.

    • Подпись токена идентификации должна быть проверена с помощью открытого ключа издателя токена идентификации, указанного в параметре authentication_openid_connect_configuration, заданном администратором.

  7. Аутентификация считается успешной, если все необходимые критерии выполнены, в противном случае аутентификация завершается неудачно, и соответствующая информация записывается в журнал ошибок.

Установка подключаемой аутентификации OpenID

В этом разделе описано, как установить плагин аутентификации OpenID Connect на стороне сервера. Дополнительную информацию об установке плагинов см. в разделе 7.6.1, «Установка и удаление плагинов».

Установите плагин аутентификации OpenID Connect на стороне сервера authentication_openid_connect на MySQL Server. Например, с помощью INSTALL PLUGIN:

INSTALL PLUGIN authentication_openid_connect SONAME 'authentication_openid_connect.so';

Затем сконфигурируйте параметр сервера MySQL authentication_openid_connect_configuration. Администратор указывает список издателей и соответствующие открытые ключи подписи, используемые для проверки подписи токена идентификации. Это определяется как строка JSON (с префиксом JSON://) или указание на файл JSON (с префиксом file://). При аутентификации принимаются только токены идентификации, выпущенные из списка издателей, указанных администратором. Например:

SET GLOBAL authentication_openid_connect_configuration = "file://full/path/to/file.json";

Файл file.json в этом примере будет похож на:

{
  "issuer1": "{\"name\":\"issuer1_formal_name\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"oUriU8GqbRw-avcMn95DGW1cpZR1IoM6L7krfrWvLSSCcSX6Ig117o25Yk7QWBiJpaPV0FbP7Y5-DmThZ3SaF0AXW-3BsKPEXfFfeKVc6vBqk3t5mKlNEowjdvNTSzoOXO5UIHwsXaxiJlbMRalaFEUm-2CKgmXl1ss_yGh1OHkfnBiGsfQUndKoHiZuDzBMGw8Sf67am_Ok-4FShK0NuR3-q33aB_3Z7obC71dejSLWFOEcKUVCaw6DGVuLog3x506h1QQ1r0FXKOQxnmqrRgpoHqGSouuG35oZve1vgCU4vLZ6EAgBAbC0KL35I7_0wUDSMpiAvf7iZxzJVbspkQ\",\"kty\":\"RSA\"}",
  "issuer2": "{\"name\":\"issuer2_formal_name\",\"e\":\"AQAB\",\"use\":\"sig\",\"n\":\"oUriU8GqbRw-avcMn95DGW1cpZR1IoM6L7krfrWvLSSCcSX6Ig117o25Yk7QWBiJpaPV0FbP7Y5-DmThZ3SaF0AXW-3BsKPEXfFfeKVc6vBqk3t5mKlNEowjdvNTSzoOXO5UIHwsXaxiJlbMRalaFEUm-2CKgmXl1ss_yGh1OHkfnBiGsfQUndKoHiZuDzBMGw8Sf67am_Ok-4FShK0NuR3-q33aB_3Z7obC71dejSLWFOEcKUVCaw6DGVuLog3x506h1QQ1r0FXKOQxnmqrRgpoHqGSouuG35oZve1vgCU4vLZ6EAgBAbC0KL35I7_0wUDSMpiAvf7iZxzJVbspkQ\",\"kty\":\"RSA\"}"
}

В качестве альтернативы, задайте authentication_openid_connect_configuration непосредственно как строку JSON вместо файла:

SET GLOBAL authentication_openid_connect_configuration = "JSON://{\"issuer1\" : \"{\\\"name\\\":\\\"issuer1_formal_name\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"n\\\":\\\"oUriU8GqbRw-avcMn95DGW1cpZR1IoM6L7krfrWvLSSCcSX6Ig117o25Yk7QWBiJpaPV0FbP7Y5-DmThZ3SaF0AXW-3BsKPEXfFfeKVc6vBqk3t5mKlNEowjdvNTSzoOXO5UIHwsXaxiJlbMRalaFEUm-2CKgmXl1ss_yGh1OHkfnBiGsfQUndKoHiZuDzBMGw8Sf67am_Ok-4FShK0NuR3-q33aB_3Z7obC71dejSLWFOEcKUVCaw6DGVuLog3x506h1QQ1r0FXKOQxnmqrRgpoHqGSouuG35oZve1vgCU4vLZ6EAgBAbC0KL35I7_0wUDSMpiAvf7iZxzJVbspkQ\\\",\\\"kty\\\":\\\"RSA\\\"}\", \"issuer2\": \"{\\\"name\\\":\\\"issuer2_formal_name\\\",\\\"e\\\":\\\"AQAB\\\",\\\"use\\\":\\\"sig\\\",\\\"n\\\":\\\"oUriU8GqbRw-avcMn95DGW1cpZR1IoM6L7krfrWvLSSCcSX6Ig117o25Yk7QWBiJpaPV0FbP7Y5-DmThZ3SaF0AXW-3BsKPEXfFfeKVc6vBqk3t5mKlNEowjdvNTSzoOXO5UIHwsXaxiJlbMRalaFEUm-2CKgmXl1ss_yGh1OHkfnBiGsfQUndKoHiZuDzBMGw8Sf67am_Ok-4FShK0NuR3-q33aB_3Z7obC71dejSLWFOEcKUVCaw6DGVuLog3x506h1QQ1r0FXKOQxnmqrRgpoHqGSouuG35oZve1vgCU4vLZ6EAgBAbC0KL35I7_0wUDSMpiAvf7iZxzJVbspkQ\\\",\\\"kty\\\":\\\"RSA\\\"}\"}";

Одно из имён издателей должно соответствовать значению identity_provider в строке аутентификации, а соответствующее значение ключа name должно совпадать со значением iss в токене идентификации.

Пользователь MySQL сопоставляется с пользователем, управляемым в домене поставщика идентификации, для аутентификации с помощью плагина клиента authentication_openid_connect_client, как показано в примере ниже:

CREATE USER
  'username'@'%'
IDENTIFIED WITH
  'authentication_openid_connect'
AS
  '{"identity_provider" : "idp_name_here", "user" : "user_id_here"}';

Замените idp_name_here именем поставщика идентификации, выбранным администратором, для соответствия одному из разрешённых ключей поставщика идентификации, указанных в конфигурации. Замените user_id_here идентификатором пользователя в домене поставщика идентификации, который должен совпадать со значением поля sub в токене идентификации.

Подключение с клиентом

Клиент с включённым плагином authentication_openid_connect_client передаёт необходимый токен идентификации для аутентификации сопоставленного пользователя MySQL, используя полный путь к файлу токена идентификации, используемый при подключении к серверу MySQL.

Например, командная строка клиента mysql передаёт параметр --authentication-openid-connect-client-id-token-file. Например:

mysql -h hostname --port port --authentication-openid-connect-client-id-token-file=/path/to/token/file -u username

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/openid-pluggable-authentication.html

Spec-Zone.ru

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