2

我们最近从 JAAS 切换到 Keycloak。应用程序是带有 EJB 和 MDB 的 JavaEE 应用程序。在 WildFly 中设置 keycloak 登录模块以将用户从 wen 传播到 EJB 并且它有效。但是当从 MDB 调用 EJB 时面临问题。收到消息时,MDB 中有匿名用户。因此,该用户无权调用受以下保护的 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 登录代码将不起作用。有什么选项可以防止从 MDB 调用 EJB 时出现权限问题?

4

0 回答 0