Hi Brian,

'Run As' is intended to make it in to 1.0 - it's my last decent
programming task to clear 1.0 and I'll be working on it today.  It is
more than halfway done in the DelegatingSubject implementation - its
just those methods won't be made available in the Subject interface
until they're finished.

Also, everyone should try to avoid using the ThreadContext as much as
possible as its usages can be brittle.  The Subject interface has the
execute* and associateWith* methods which perform the thread binding
and unbinding automatically in all cases and those should be used
depending on your needs.  If you still feel that you must create your
own Subject instance, the way to do that is via the Subject.Builder
mechanism.

That's documented here:
https://cwiki.apache.org/confluence/display/SHIRO/Subject

Look for the 'Subject.Builder' section - the recommended approach is
the 'Automatic Association' and 'A Different Thread' sections ('Manual
Association' is best left for very low level framework work).

But all this might not even be necessary for you - you should check
out the new Executor/ExecutorService/ScheduledExecutorService support
new to 1.0 (not yet documented in the wiki) located in the
org.apache.shiro.concurrent package.  They are JavaDoc'd already and
explain exactly why you might want to use one.

Finally, as for the WebSecurityManagers failing for non-request-based
interaction, that has been resolved in
https://issues.apache.org/jira/browse/SHIRO-111

If a method is called that requires a request/response pair, and that
pair is not available for some reason, the web-specific method is not
called and only the superclass (DefaultSecurityManager) logic
executes.  The same principal exists in the DefaultWebSessionManager
if using native sessions as well.

HTH!

Les

On Tue, May 11, 2010 at 6:33 AM, Brian Demers <brian.dem...@gmail.com> wrote:
> Hey guys,
>
> I was just wondering the status of 'Run As' support (Assume Identity, I
> think there where a few other terms that where thrown around too)
> https://issues.apache.org/jira/browse/SHIRO-25
>
> I took a look at that patches and reread the previous threads.  I am
> assuming this isn't going to make the 1.0 ( can we bump the jira 'fix for'
> version? )
>
> To get this support in the past.  I have done the following:
>
>        DelegatingSubject fakeLoggedInSubject = new DelegatingSubject(
> principal, /* authenticated */ true, null, null, /* Non-web */
> securityManager );
>        // fake the login
>        ThreadContext.bind( fakeLoggedInSubject );
>
>
> We are not using this in production yet, but in my web app I need to use two
> different SecurityManagers, one for the Web (bound to http requests) and the
> default one, for this 'run as' support.  We would be using the 'run as' to
> run scheduled task (so there is no access to http requests)
>
> Are there flaws behind this approach?
>
> Will / does the the official support for this get around the
> WebSecurityManagers need for a http request?
>
> Thanks,
> Brian
>

Reply via email to