It looks to me as if the mdb interceptor stack is missing the EJBRunAsInterceptor which would mean that run-as wouldn't work. I'm also not seeing how any Subject such as the default subject is set for an mdb call. So I think there's a bug (would rather check the spec to make sure it's supposed to work before definitely declaring a bug). Since you can't import security with an mdb from the inbound message I'd think you could get almost the same result by making the default subject for the mdb call your run-as subject, and this might work, but I can't figure out if or how that's being set.

If you would like to experiment you might compare the ejb containers and modify the mdb one to include the EJBRunAsInterceptor at a likely spot and see if it works.

thanks
david jencks

On Feb 19, 2007, at 9:10 AM, Aman Nanner/MxI Technologies wrote:


Hi,


One Geronimo 1.2-beta, I'm running into a problem where a message- driven bean that I have is unable to access a stateless session EJB that I have,
due to method permission restrictions.  This MDB is configured with a
"run-as" subject in the ejb-jar.xml which is supposed to allow it to access this restricted EJB. I have the MDB configured similar to the following:

----
      <message-driven>
         <display-name>TestMDB</display-name>
         <ejb-name>TestMDB</ejb-name>
         <ejb-class>com.acme.ejb.TestMDB</ejb-class>
         <transaction-type>Bean</transaction-type>

<message-destination-type>javax.jms.Topic</message-destination-type>
         <activation-config>
            <activation-config-property>

<activation-config-property-name>acknowledgeMode</activation-config- property-name>

<activation-config-property-value>Auto-acknowledge</activation- config-property-value>
            </activation-config-property>
            <activation-config-property>

<activation-config-property-name>messageSelector</activation-config- property-name>
               <activation-config-property-value>JOB_CODE =
'FOO'</activation-config-property-value>
            </activation-config-property>
            <activation-config-property>

<activation-config-property-name>subscriptionDurability</activation- config-property-name>

<activation-config-property-value>NonDurable</activation-config- property-value>
            </activation-config-property>
         </activation-config>
         <ejb-ref>
            <ejb-ref-name>ejb/common/TestEJB</ejb-ref-name>
            <ejb-ref-type>Session</ejb-ref-type>
            <home>com.acme.ejb.TestHome</home>
            <remote>com.acme.ejb.TestRemote</remote>
            <ejb-link>TestEJB</ejb-link>
         </ejb-ref>
         <security-identity>
            <run-as>
               <role-name>TESTROLE</role-name>
            </run-as>
         </security-identity>
      </message-driven>
----

Can anybody confirm if the "run-as" functionality for MDBs works as it's
supposed to in Geronimo 1.2-beta?  Am I supposed to make a further
configuration to one of the geronimo or openejb descriptors, in addition to
the ejb-jar.xml?

Through some debugging in Eclipse, I've found that the "run-as" subject does get loaded into the MDB Deployment Context as described, but I haven't
confirmed if it actually gets set as the Subject for the context.

Thanks,
Aman

______________________________________________________________________ ____________ * This message is intended only for the use of the individual or entity to which it is addressed, and may contain information that is privileged, confidential and exempt from disclosure under applicable law. Unless you are the addressee (or authorized to receive for the addressee), you may not use, copy or disclose the message or any information contained in the message. If you have received this message in error, please advise the sender by reply e- mail , and delete the message, or call (collect) 001 613 747 4698. *


Reply via email to