В JAAS есть класс Subject, у которого, помимо прочего, есть два статических метода doAs и doAsPrivileged. Со вторым всё более менее понятно, удалось написать работающий пример.
С первым же, который doAs — ничего не выходит.
Итак, ситуация. Есть секьюрные настройки приложения (установленные через -Djava.security.policy==), которые запрещают читать проперть, пусть «test.property». Есть принципал, пусть «Jon», которому такая пермиссия дана (через -Djava.security.auth.policy==). По описанию, вызов Subject.doAs(subjectJon, privilegedAction) при помощи DomainCombiner-а должен сделать новый ProtectionDomain из текущего и того, который у конкретного принципала. Но этого не происходит и выдается SecurityException (проперть читать нельзя). При использовании doAsPrivileged(subjectJon, privilegedAction, null) всё работает, причем пермиссии реально смешиваются, как положено.
Товарищи, кто в теме, напишите, плиз, маленький пример как работает метод doAs. Или опишите ситуации в которых он работает, возможно я его пытаюсь не по назначению применить.
PS: примеры найденные в инете и в книге Java Security — не работают, причем с точностью до замены doAs на doAsPrivileged.