Hi Steinar,

I thought that's what pax shiro is for.  [1]

regards, Achim

[1] - https://github.com/ops4j/org.ops4j.pax.shiro

2018-03-18 20:23 GMT+01:00 Steinar Bang <[email protected]>:

> Has anyone else been using apache shiro with the pax web whiteboard
> extender?  Has anyone else succeeded in making it work?
>
> Shiro uses a filter to handle authentication and authorization for a
> paths of a webapp.
>
> I'm trying to create a ShiroFilter DS component to front a servlet
> (also a DS component) when using the Pax Web Whiteboard Exctender.
>
> It seemed to work at first, ie. I got a login windown in my application
> and was able to log in (which means that shiro is working as it is
> supposed to), but when I changed the name of the filter DS component it
> started failing.
>
> I don't know *why* it fails when the name is changed, but I know *how*
> it fails: it fails with the error message:
>   No WebEnvironment found: no EnvironmentLoaderListener registered?
>
> This is a well known and dreaded error message when using apache shiro,
> see eg.
>  https://stackoverflow.com/questions/15645799/jetty-
> maven-plugin-unable-to-hot-redeploy-shiro-filter
>  https://stackoverflow.com/questions/15645799/jetty-
> maven-plugin-unable-to-hot-redeploy-shiro-filter
>
> I have encountered this issue earlier, when I first tried to use the pax
> web whiteboard extender, using my home brewed "mini dependency
> injection" BundleActivator.  The way I solved it make the ShiroFilter
> listen for a service of type WebContainer, and create an
> EnvironmentLoaderListener when a WebContainer is enabled, like this:
>
>  @Component(
>      property= {
>          HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_PATTERN+"=/
> ukelonn/*",
>          "servletNames=ukelonn"},
>      service=Filter.class,
>      immediate=true
>  )
>  public class UkelonnShiroFilter extends ShiroFilter {
>      private WebContainer webContainer;
>      private HttpContext httpcontext;
>      private EnvironmentLoaderListener listener;
>
>      @Reference
>      public void setWebContainer(WebContainer webContainer) {
>          createEnvironmentLoaderListenerAndDefaultContext(webContainer);
>      }
>
>      private void 
> createEnvironmentLoaderListenerAndDefaultContext(WebContainer
> webContainer) {
>          if (this.webContainer == webContainer) {
>              return; // already registered, nothing to do
>          }
>
>          unregisterExistingEnvironmentLoaderListener();
>
>          this.webContainer = webContainer;
>
>          if (webContainer != null) {
>              httpcontext = webContainer.createDefaultHttpContext();
>              listener = new EnvironmentLoaderListener();
>              webContainer.registerEventListener(listener, httpcontext);
>          }
>      }
>
>      private void unregisterExistingEnvironmentLoaderListener() {
>          if (webContainer != null) {
>              webContainer.unregisterEventListener(listener);
>              listener = null;
>          }
>      }
>
>  }
>
> This worked at first, but stopped working when I changed the name of the
> class.  I can see in the debugger that the UkelonnShiroFilter gets a
> WebContainer injection and creates and registers an
> EnvironmentLoaderListener.
>
> But even so the ShiroFilter fails during initialization with the
> following error message:
>  java.lang.IllegalStateException: No WebEnvironment found: no
> EnvironmentLoaderListener registered?
>
> Does anyone know what I can/should do to initialize the WebEnvironment
> properly for the shiro filter?
>
> Thanks!
>
>
> - Steinar
>
> --
> --
> ------------------
> OPS4J - http://www.ops4j.org - [email protected]
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OPS4J" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>



-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Software Architect / Project Manager / Scrum Master

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to