openjdk.ruOpenJDK на русском

JEP 113: MS-SFU Kerberos 5 Extensions

Расширения MS-SFU для Kerberos 5

ОтветственныйWeijun Wang
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск8
Компонентsecurity-libs / java.security
Обсуждениеsecurity dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
ОдобренBrian Goetz
Создан2011/04/22 20:00
Обновлён2026/08/04 23:14
Задача8046103

Аннотация

Добавить расширения MS-SFU в реализацию Kerberos 5 в JDK.

Цели

  1. Реализовать протокол MS-SFU S4U2self
  2. Реализовать протокол MS-SFU S4U2proxy
  3. Обеспечить совместимость реализации с текущими реализациями MS и MIT.

Мотивация

В типичном сетевом сервисе фронтенду (например, веб-серверу) часто нужно обращаться к бэкенду (например, к серверу базы данных) от имени клиента. Kerberos 5 поддерживает делегирование, но требует, чтобы Kerberos использовался на всех уровнях. В некоторых случаях аутентификация между клиентом и фронтендом выполняется не через Kerberos (например, клиент входит на веб-сервер с помощью дайджест-аутентификации), и учётных данных Kerberos, которые можно было бы делегировать, нет. Microsoft определяет расширение Service for User (S4U), чтобы фронтенд всё равно мог обращаться к бэкенду от имени клиента без учётных данных клиента.

Кроме того, при стандартном делегировании Kerberos 5 (которое Microsoft называет открытым делегированием), если учётной записи сервиса предоставлена возможность делегирования, она может делегировать вообще любому сервису. Поэтому с этой привилегией нужно обращаться очень осторожно. Делегирование MS-SFU (Microsoft называет его ограниченным делегированием), напротив, гораздо безопаснее. В этом случае администратор может точно контролировать, каким сервисам может делегировать конкретный сервис.

Microsoft использует S4U начиная с Windows Server 2003, а недавно эту возможность стала поддерживать и реализация Kerberos 5 от MIT (в krb5-1.8).

Описание

S4U включает два расширения исходного протокола Kerberos, определённого в RFC 4120: Service-for-User-to-Self (S4U2self), с помощью которого фронтенд-сервис может получить сервисный билет Kerberos к самому себе от имени пользователя, и Service-for-User-to-Proxy (S4U2proxy), с помощью которого он может получить от имени пользователя сервисный билет ко второму, бэкенд-сервису.

Вместе эти два расширения позволяют фронтенд-сервису получить сервисный билет Kerberos от имени пользователя. Полученный сервисный билет можно использовать для:

  • получения собственной информации запрашивающего сервиса;
  • управления доступом на локальной машине сервиса от имени пользователя;
  • запросов к какому-либо другому сервису от имени пользователя.

Для поддержки этой возможности мы добавим новый публичный JGSS-API. Вероятно, также будут добавлены новые конфигурационные файлы и/или системные свойства.

Альтернативы

Мы также можем доработать нативный провайдер JGSS, чтобы он использовал существующую возможность S4U нативной реализации Kerberos.

Тестирование

  1. Функциональные тесты в JDK. Поддержка S4U в тестовом KDC
  2. Тестирование совместимости с Microsoft Active Directory и реализацией Kerberos 5 от MIT.

Влияние

  • JCP: влияния на JCP нет
  • Другие компоненты JDK: влияния на другие компоненты JDK нет
  • Совместимость: минимальное
  • Безопасность: влияния на безопасность нет
  • Переносимость: влияния на переносимость нет
  • Пользовательский интерфейс: графического пользовательского интерфейса нет
  • CCC: новый JGSS-API, скорее всего, новые методы для GSSContext, возможно, новый конфигурационный файл и системные свойства
  • Документация: новая документация/учебное руководство в разделе JGSS
  • Интернационализация: минимальное влияние, вероятно, будут добавлены новые сообщения об ошибках
  • Локализация: минимальное влияние, вероятно, будут добавлены новые сообщения об ошибках
  • Правовые вопросы: MS-SFU опубликован в рамках Microsoft Open Specification
  • Прочее: другое влияние неизвестно