JBoss EAP 6.x - PolicyContext.getContext остается нулевым

Я использую JBoss EAP 6.4 для своего корпоративного приложения, и я немного застрял, когда пытаюсь получить активный объект.

Конечно, пользователю потребуется аутентификация, которая проходит через следующий фрагмент кода

LoginContext loginContext = new LoginContext("CONTEXTNAME", callbackHandler);
loginContext.login();
return loginContext.getSubject();

Это работает очень хорошо (и тема заполнена), однако проблема заключается в том, когда я пытаюсь получить объект на более позднем этапе выполнения...

final Subject subject = (Subject)PolicyContext.getContext("javax.security.auth.Subject.container");

... где subject остается нулевым!

Что мне не хватает??

Буду признателен за любую оказанную помощь.

1 ответ

Решение

РЕШИТЬ!

Благодаря следующей статье о том, как представить менеджер безопасности в JBoss EAP 6.4.

Проблема заключалась в том, что менеджер безопасности должен был быть настроен в JBoss. Вам нужно открыть standalone.conf (или standalone.conf.bat), раскомментировать и добавить следующее:

rem # Uncomment this to run with a security manager enabled
set "SECMGR=true"

rem # Using == when setting -Djava.security.policy specifies that the security manager 
rem # will use only the specified policy file. Using = specifies that the security 
rem # manager will use the specified policy combined with the policy set in the policy.url 
rem # section of JAVA_HOME/lib/security/java.security.
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.policy==%JBOSS_HOME%\bin\server.policy"

Это включит менеджер безопасности и заставит его указывать на пользовательский файл server.policy, пример которого приведен ниже:

grant {
  permission java.security.AllPermission;
};

Это даст все разрешения для работы любых модулей. Конечно, вам нужно будет отредактировать файл политики, если вы хотите усилить безопасность.

Получение Subject тоже легко:

Subject.getSubject(AccessController.getContext());

Это оно! Надеюсь, это сработает и для вас, ребята.

Другие вопросы по тегам