Проблема с разрешением вызова EJB из MDB
Недавно мы перешли с JAAS на Keycloak. Приложение - это приложение JavaEE с EJB и MDB. Установите модуль входа в keycloak в WildFly, чтобы распространять пользователя от wen к EJB, и это сработало. Но возникает проблема, когда EJB вызывается из MDB. При получении сообщения в MDB есть пользователь anonymoius. Так что у этого пользователя нет разрешения вызывать EJB, защищенный:
<s:security>
<ejb-name>*</ejb-name>
<s:missing-method-permissions-deny-access>false</s:missing-method-permissions-deny-access>
<s:security-domain>keycloak</s:security-domain>
</s:security>
В версии JAAS у нас есть программный вход в систему с использованием выделенного пользователя mdb.
loginContext = new LoginContext("ldap", new CallbackHandler() {
@Override
public void handle(Callback[] callbacks) {
...
}
});
loginContext.login();
//Invoke EJB now as logged in user
Это пользователь с необходимым разрешением. С тех пор, как перешел на Keycloak, этот код входа в систему JAAS не будет работать. Как можно запретить выдачу разрешений при вызове EJB из MDB?