2017-01-03 8 views
0

Я хочу посмотреть, какой пользователь попытался получить доступ к методам EJB, которые не разрешены для его соответствующей роли (через @RolesAllowed аннотацию). Кажется, я могу только видеть, что неудавшееся Разрешение Проверка произошла в журнале (+, на котором Bean, какой метод и метка время), но не ВОЗ пытались назвать:Пользователь журнала Glassfish, который не прошел проверку доступа

[2016-12-15T17:48:36.061+0100] [glassfish 4.1] [INFO] [] [javax.enterprise.system.core.security] [tid: _ThreadID=96 _ThreadName=http-listener-1(4)] [timeMillis: 1481820516061] [levelValue: 800] [[ 
JACC Policy Provider: Failed Permission Check, context(SecuredAccess/SecuredAccess_EJB_jar)- permission(("javax.security.jacc.EJBMethodPermission" "WorkBean" "administrationTask,Local,"))]] 

[2016-12-15T17:48:36.061+0100] [glassfish 4.1] [WARNING] [AS-EJB-00056] [javax.enterprise.ejb.container] [tid: _ThreadID=96 _ThreadName=http-listener-1(4)] [timeMillis: 1481820516061] [levelValue: 900] [[ 
A system exception occurred during an invocation on EJB WorkBean, method: public java.lang.String work.WorkBean.administrationTask()]] 

Есть ли способ настроить Glassfish, чтобы он регистрировал принципала вызывающего пользователя или, по крайней мере, какой-то идентификатор сеанса, я могу затем сопоставить конкретного пользователя? Он регистрирует пользователя для каждого действительного вызова метода, но как-то не для отрицаемых.

ответ

0

Я встретил эту проблему тоже. Это может быть вызвано: вы копируете файл jar/class в папку приложения Glassfish напрямую. Вам необходимо повторно развернуть приложение (war/ear), после чего эта проблема исчезнет.

Удачи вам!