Шаблон, который я видел:
AccessControlContext acc = AccessController.getContext();
Subject subject = Subject.getSubject(acc);
Set<Principal> principals = subject.getPrincipals();
По сути, это находит субъект, в настоящее время связанный с текущим потоком, и запрашивает его принципалы.
Одним из примеров использования этого является Apache Jackrabbit RepositoryImpl . Это метод extendAuthentication
, задача которого - определить, какие права на Jackrabbit имеет текущий поток при создании нового сеанса (я думаю).
Тем не менее, я должен отметить, что это не обязательно может работать, по крайней мере, в контексте J2EE. Я использую этот код под JBoss AS7, и он не находит тему. Это может быть просто ошибкой.