Keycloak 从MDB调用EJB时的权限问题

Keycloak 从MDB调用EJB时的权限问题,keycloak,ejb-3.2,Keycloak,Ejb 3.2,我们最近从JAAS切换到KeyClope。应用程序是带有EJB和MDB的JavaEE应用程序。 在WildFly中设置keydape登录模块,将用户从wen传播到EJB&它起作用了。 但在从MDB调用EJB时面临问题。收到消息时,MDB中存在匿名用户。因此,用户没有调用受以下保护的EJB的权限: <s:security> <ejb-name>*</ejb-name> <s:missing-method-permissions-deny-a

我们最近从JAAS切换到KeyClope。应用程序是带有EJB和MDB的JavaEE应用程序。 在WildFly中设置keydape登录模块,将用户从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>

此用户具有所需的权限。由于现在移动到keydape,这个JAAS登录代码将无法工作。从MDB调用EJB时,防止权限问题的选项是什么?

您使用
keydape登录模块是什么意思?哪个适配器?如何配置它?您能从MDB检索用户会话吗?它是wildfly适配器。keydape建议在conf中添加一个名为“keydape”的登录模块,以将用户从web层传播到ejb。在MDB中,用户是匿名的。您希望以应用程序用户的身份登录,并以该用户的身份从那里访问ejb。
loginContext = new LoginContext("ldap", new CallbackHandler() {
     @Override
    public void handle(Callback[] callbacks) {
     ...
     }
 });
 loginContext.login();
 //Invoke EJB now as logged in user