0

JBoss AS7 / EAP6 有问题。在 MDB 中,当我查找 SSB 并调用其方法时,调用始终是匿名的,即sessionContext.getCallerPrincipal()返回 Principal(anonymous)。总是……在 AS5 中一切都很好。

如何修复它以与经过身份验证的用户通话?

我的 MDB:

@MessageDriven(activationConfig = { 
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/piQueue"), 
        @ActivationConfigProperty(propertyName = "dLQMaxResent", propertyValue = "3")
})
@SecurityDomain("mySecurityDomain")
public class PIMessageBean implements MessageListener {
...
    **//subject always anonymous...**
    Subject subject = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");

    PIManager pim = lookupPIManager();
    pim.getPIs(); **//call is anonymous**
...
}

我的队列设置:

<subsystem xmlns="urn:jboss:domain:messaging:1.2">
    <hornetq-server>
    ...
        <jms-destinations>
            <jms-queue name="piQueue">
                <entry name="queue/piQueue"/>
                <entry name="java:jboss/exported/jms/queue/piQueue"/>
            </jms-queue>
        </jms-destinations>
        <security-domain>mySecurityDomain</security-domain>
    </hornetq-server>
</subsystem>

我的安全域:

<security-domain name="mySecurityDomain" cache-type="default">
    <authentication>
        <login-module code="com.qu.vad.CustomUsernamePasswordLoginModule" flag="required">
        </login-module>
    </authentication>
</security-domain>
4

1 回答 1

0

通过在 MDB 中进行 JAAS 登录解决了该问题

于 2013-07-16T14:41:35.260 回答