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.
Цели
- Реализовать протокол MS-SFU S4U2self
- Реализовать протокол MS-SFU S4U2proxy
- Обеспечить совместимость реализации с текущими реализациями 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.
Тестирование
- Функциональные тесты в JDK. Поддержка S4U в тестовом KDC
- Тестирование совместимости с Microsoft Active Directory и реализацией Kerberos 5 от MIT.
Влияние
- JCP: влияния на JCP нет
- Другие компоненты JDK: влияния на другие компоненты JDK нет
- Совместимость: минимальное
- Безопасность: влияния на безопасность нет
- Переносимость: влияния на переносимость нет
- Пользовательский интерфейс: графического пользовательского интерфейса нет
- CCC: новый JGSS-API, скорее всего, новые методы для GSSContext, возможно, новый конфигурационный файл и системные свойства
- Документация: новая документация/учебное руководство в разделе JGSS
- Интернационализация: минимальное влияние, вероятно, будут добавлены новые сообщения об ошибках
- Локализация: минимальное влияние, вероятно, будут добавлены новые сообщения об ошибках
- Правовые вопросы: MS-SFU опубликован в рамках Microsoft Open Specification
- Прочее: другое влияние неизвестно