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

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() и наследуются потоками.