What about the InitialContext you're creating in the servlet (or any
other client) for lookup. In WebLogic, you should be setting
Context.SECURITY_PRINCIPAL and Context.SECURITY_CREDENTIALS while
creating the InitialContext? Does it not explain the magic?

Subrahmanyam

Laird Nelson wrote:
>
> I've been carrying on this discussion with Assaf Arkin and Rickard Oberg
> (sorry, Rickard; can't figure out on my Sun keyboard here how to create
> the proper character for the first letter of your last name--and am
> feeling quite stupid about it, actually....) offline, and would now like
> to expose it to the EJB-INTEREST list as a whole.
>
> Has anyone out there written a servlet to log a user in to a system?  (I
> SURE hope the answer is yes.  :-))
>
> If so, has that same person then managed to pass that information on to
> an EJB container?  If so, how?  Could you kindly pass sample code along
> for your container's way of doing this?
>
> Here, in more detail, is what I'm talking about.  Note that although the
> Servlet 2.2 API has security related calls (isCallerInRole(), etc.) I am
> restricted to using 2.1 (as I suspect 902837029375 other people are as
> well) which has no such calls:
>
> Joe wants to log in, so he hits a URL that calls LoginServlet.
> LoginServlet takes in username and password, looks up user by username
> (in the database, say), finds the user on disk, validates password;
> everything is OK.  LoginServlet puts Joe, or some other token, into the
> Session object to effectively identify that Joe is indeed logged in.
>
> ===> MAGIC PART STARTS HERE
> LoginServlet now somehow magically calls God down from the heavens to
> cause a miracle to happen whereby the EJB container that hasn't yet been
> invoked is now made aware of the fact that Joe is the current
> Principal.  That is, any enterprise bean that, in the future, will call
> EJBContext.getCallerPrincipal(), will get Joe's Principal as the return
> value.  Various angels and demigods retreat back to the ethereal heights
> whence they came.
> ===> MAGIC PART ENDS HERE
>
> Joe now navigates around the site as a "logged in" user and finally hits
> OrderProcessingServlet.
> OrderProcessingServlet does something to figure out that Joe is logged
> in.  Perhaps it looks in the Session object to get the joe object that's
> been stashed there.  Doesn't really matter.  All that matters is this
> servlet knows now that it is dealing with an authenticated user.
> OrderProcessingServlet calls InitialContext.getInitialContext() (or
> whatever that first JNDI call is).
> Using the context, OrderProcessingServlet now wants to get the
> OrderProcessor session bean.  OrderProcessingServlet gets the session
> bean's home.
> OrderProcessingServlet uses the OrderProcessorHome to get the
> OrderProcessor.
> OrderProcessingServlet now invokes OrderProcessor.processOrder().
> This method invocation of course flows across the wire into the EJB
> container.
> The EJB container begins checking security.
>
> ===> MAGIC CONTAINED STARTING HERE
> The EJB container DUE TO MAGIC AND DIVINE INTERVENTION (see above)
> miraculously already? knows that the invoker of processOrder() is Joe.
> ===> MAGIC CONTAINMENT ENDS HERE
>
> The EJB container looks up its little container-specified list of users
> to roles.
> The EJB container discovers that in fact Joe is wanted in five states
> for armed assault and hence is not a member of the Buyer role.
> The EJB container rejects the call to processOrder().
> OrderProcessingServlet receives an Exception saying something like "Joe
> not in role Buyer".
>
> OK, there are two spots in this ridiculously simple flow of events where
> divine intervention is required.  Could someone (preferably using
> WebLogic) please detail the prayers and incantations that are required
> of the various servlets in order to get the EJB container to be aware
> that Joe has logged in?
>
> Does anyone from Sun monitor this list?  Is this absurdly childish
> example REALLY this hard?  Is it therefore the case that if this example
> is indeed correct that one would be utterly foolish and insane to buy a
> servlet engine that is not tightly coupled to an EJB container?  Doesn't
> that in itself violate the entire intent of the specification, viz.
> buying best-of-breed individual components that don't need to be made by
> the same vendor?  Isn't this all incredibly stupid?
>
> Cheers,
> Laird
>
> ===========================================================================
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff EJB-INTEREST".  For general help, send email to
> [EMAIL PROTECTED] and include in the body of the message "help".

--
----------------------------------------------------------
Letting U=Universal, and given God=U and Unreason=U,
        Unreason=God                            --- Q.E.D.
Check me at http://www.Subrahmanyam.com
----------------------------------------------------------

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to