JEP 140: Limited doPrivileged
Ограниченный doPrivileged
| Автор | Sean Mullan |
| Ответственный | Jeffrey Nisewanger |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | security-libs / java.security |
| Обсуждение | security dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Блокирует | JEP 183: HTTP Cross-Origin Resource Sharing |
| JEP 184: HTTP URL Permissions | |
| Одобрен | Brian Goetz |
| Создан | 2011/08/25 20:00 |
| Обновлён | 2026/08/04 23:14 |
| Задача | 8046130 |
Аннотация
Дать коду возможность заявлять часть своих привилегий, не препятствуя при этом полному обходу стека контроля доступа для проверки других разрешений.
Мотивация
Это очень полезно, когда вам нужно включить некоторые разрешения и при этом позволить обходу стека продолжиться для остальных.
Описание
Добавить метод java.security.AccessController.doPrivileged, принимающий аргумент-разрешение.
Например, некоторый загрузочный код JRE мог бы заявить привилегию на получение (GET) конфигурационного файла по http:
AccessController.doPrivileged(anon class...,
new URLPermission(url,
request props ...,
"GET") ...
Проверка checkPermission() для совпадающего URLPermission (выполняемая обработчиком http) остановила бы обход стека контекста контроля доступа (acc) на этом вызове doPrivileged() и завершилась бы успешно. Однако проверка для несовпадающего URLPermission или какого-либо другого разрешения сопоставлялась бы с привилегиями, назначенными классу JRE в общем порядке, и продолжила бы обход полного стека acc так, как если бы ограниченный doPrivileged() не вызывался.
Эти ограниченные привилегии также захватываются getAccessControlContext() и наследуются потоками.