I only mentioned IniShiroFilter since Matt said he was on 1.1.  
EnvironmentLoaderListener was added in 1.2, wasn't it?

Matt, if possible, I would recommend using 1.2.

-Jared

On Wed 02 May 2012 01:43:25 PM CDT, Les Hazlewood wrote:
> Hi Matt,
>
> Yes, Jared's right, you'll probably want the main ShiroFilter
> configured within Jetty.  This is a 'master filter' of sorts that will
> internally delegate to other filter chains define in shiro.ini (this
> is much easier to do in shiro.ini than in Jetty-specific code IMO).
>
> So, your code might look like this:
>
> m_rssServer = new Server(m_portNumber);
> ServletContextHandler context = new
> ServletContextHandler(ServletContextHandler.SESSIONS);
> context.setContextPath("/");
>
> //set up Shiro 1.2+ environment:
> EnvironmentLoaderListener listener = new EnvironmentLoaderListener();
> context.callContextInitialized(listener, new ServletContextEvent());
>
> //Add root ShiroFilter:
> FilterHolder filterHolder = new FilterHolder();
> filterHolder.setFilter(new ShiroFilter());
> // all remaining filters and filter chains are defined in shiro.ini's
> [urls] section.
>
> EnumSet<DispatcherType> types = EnumSet.allOf(DispatcherType.class);
> context.addFilter(filterHolder, "/*", types);
> context.addServlet(new ServletHolder(new FeedHandler()),"/*");
> m_rssServer.setHandler(context);
> m_rssServer.start();
>
> Now, I didn't test this, so you might have to tweak it a bit depending
> on how Jetty's ServletContextHolder concept functions, but the idea is
> what is important:
>
> 1) set up the EnvironmentLoaderListener to initialize Shiro (defaults
> to shiro.ini in /WEB-INF/shiro.ini or at the root of the classpath).
> 2) create and init a ShiroFilter, which will look up and use the Shiro
> WebEnvironment created in 1).
>
> Shiro will then filter all requests.  You can set up any remaining
> servlet filters (including the BasicHttpAuthenticationFilter) in
> shiro.ini's [urls] section, just like Jared showed (/** = authcBasic).
>
> HTH,
>
> --
> Les Hazlewood
> CTO, Stormpath | http://stormpath.com | 888.391.5282
> twitter: @lhazlewood | http://twitter.com/lhazlewood
> blog: http://leshazlewood.com
> stormpath blog: http://www.stormpath.com/blog
>
>
> On Wed, May 2, 2012 at 8:38 AM, Jared Bunting
> <[email protected]> wrote:
>> It looks to me like, in your code, you should be adding IniShiroFilter
>> instead of BasicHttpAuthenticationFilter.  And then, in the [urls]
>> section of shiro.ini, you'll need something like:
>>
>> /** = authcBasic
>>
>> -Jared
>>
>> On Wed 02 May 2012 10:04:39 AM CDT, MattShaw wrote:
>>> Hi Lee,
>>>
>>> Ok thanks,
>>>
>>> I'm inexperienced in this area and so I'm not sure how to integrate the
>>> Shiro implementation with our new Embedded Jetty Server.  I assumed there
>>> would be a mechanism.
>>>
>>> I'm currently using Shiro 1.1 and Jetty 8.1
>>>
>>> The Jetty Code looks like this:
>>>
>>> m_rssServer = new Server(m_portNumber);
>>> ServletContextHandler context = new
>>> ServletContextHandler(ServletContextHandler.SESSIONS);
>>> context.setContextPath("/");
>>> FilterHolder filterHolder = new FilterHolder();
>>> filterHolder.setFilter(new BasicHttpAuthenticationFilter());
>>> EnumSet<DispatcherType> types = EnumSet.allOf(DispatcherType.class);
>>> context.addFilter(filterHolder, "/*", types);
>>> context.addServlet(new ServletHolder(new FeedHandler()),"/*");
>>> m_rssServer.setHandler(context);
>>> m_rssServer.start();
>>>
>>> Where Server is the Jetty embedded Jetty server.
>>>
>>> When I now run this modified code the Browser doesn't challenge me for a
>>> username/password, it just shows the content as if the Filter wasn't there?
>>>
>>> I don't have a web.xml or any other config file apart from the shiro.ini
>>> which has the following content:
>>>
>>> # =======================
>>> # Shiro INI configuration
>>> # =======================
>>>
>>> [main]
>>> # Objects and their properties are defined here,
>>> # Such as the securityManager, Realms and anything
>>> # else needed to build the SecurityManager
>>> activeDirectoryRealm =
>>> org.apache.shiro.realm.activedirectory.ActiveDirectoryRealm
>>> activeDirectoryRealm.url = ldap://<hidden from forum>
>>>
>>> iniRealm = org.apache.shiro.realm.text.IniRealm
>>> iniRealm.resourcePath = vkb.ini
>>>
>>> authcStrategy = org.apache.shiro.authc.pam.FirstSuccessfulStrategy
>>>
>>> securityManager.authenticator.authenticationStrategy = $authcStrategy
>>>
>>> securityManager.sessionManager.globalSessionTimeout = 1800000
>>>
>>> [users]
>>> # The 'users' section is for simple deployments
>>> # when you only need a small number of statically-defined
>>> # set of User accounts.
>>> testUser=password
>>> testUser1=password1
>>> testUser2=password2
>>> testUser3=password3
>>> guest=guest
>>>
>>> [roles]
>>> # The 'roles' section is for simple deployments
>>> # when you only need a small number of statically-defined
>>> # roles.
>>>
>>> [urls]
>>> # The 'urls' section is used for url-based security
>>> # in web applications.  We'll discuss this section in the
>>> # Web documentation
>>>
>>> Please could you offer any advise as I am obviosuly missing something?
>>>
>>> Best regards
>>>
>>> Matt
>>>
>>> --
>>> View this message in context: 
>>> http://shiro-user.582556.n2.nabble.com/Integration-of-Shiro-with-Embedded-Jetty-tp7519712p7520498.html
>>> Sent from the Shiro User mailing list archive at Nabble.com.
>>
>>


Reply via email to