Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SHIRO-493 - Adding new methods and deprecating old to ShiroWebModule …
…to support Guice 4
- Loading branch information
Showing
43 changed files
with
2,589 additions
and
96 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<!-- | ||
~ Licensed to the Apache Software Foundation (ASF) under one | ||
~ or more contributor license agreements. See the NOTICE file | ||
~ distributed with this work for additional information | ||
~ regarding copyright ownership. The ASF licenses this file | ||
~ to you under the Apache License, Version 2.0 (the | ||
~ "License"); you may not use this file except in compliance | ||
~ with the License. You may obtain a copy of the License at | ||
~ | ||
~ http://www.apache.org/licenses/LICENSE-2.0 | ||
~ | ||
~ Unless required by applicable law or agreed to in writing, | ||
~ software distributed under the License is distributed on an | ||
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
~ KIND, either express or implied. See the License for the | ||
~ specific language governing permissions and limitations | ||
~ under the License. | ||
--> | ||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<parent> | ||
<groupId>org.apache.shiro.integrationtests</groupId> | ||
<artifactId>shiro-integration-tests</artifactId> | ||
<version>1.4.0-SNAPSHOT</version> | ||
</parent> | ||
|
||
<artifactId>shiro-its-guice3</artifactId> | ||
<name>Apache Shiro :: ITs :: Guice 3</name> | ||
<packaging>war</packaging> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>jetty-maven-plugin</artifactId> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>javax.servlet</groupId> | ||
<artifactId>jstl</artifactId> | ||
<scope>compile</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>javax.servlet</groupId> | ||
<artifactId>javax.servlet-api</artifactId> | ||
<scope>provided</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>slf4j-log4j12</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>log4j</groupId> | ||
<artifactId>log4j</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.apache.shiro</groupId> | ||
<artifactId>shiro-core</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.apache.shiro</groupId> | ||
<artifactId>shiro-web</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.apache.shiro</groupId> | ||
<artifactId>shiro-guice</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.google.inject.extensions</groupId> | ||
<artifactId>guice-servlet</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.slf4j</groupId> | ||
<artifactId>jcl-over-slf4j</artifactId> | ||
<scope>runtime</scope> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.apache.shiro</groupId> | ||
<artifactId>shiro-guice</artifactId> | ||
<version>${project.version}</version> | ||
<classifier>tests</classifier> | ||
</dependency> | ||
<dependency> | ||
<groupId>net.sourceforge.htmlunit</groupId> | ||
<artifactId>htmlunit</artifactId> | ||
<version>2.6</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>apache-jsp</artifactId> | ||
<version>${jetty.version}</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>apache-jstl</artifactId> | ||
<version>${jetty.version}</version> | ||
<type>pom</type> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.github.mjeanroy</groupId> | ||
<artifactId>junit-servers-jetty</artifactId> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
</project> |
43 changes: 43 additions & 0 deletions
43
...-tests/guice3/src/main/java/org/apache/shiro/samples/guice/SampleShiroGuiceBootstrap.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. The ASF licenses this file | ||
* to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
package org.apache.shiro.samples.guice; | ||
|
||
import com.google.inject.Guice; | ||
import com.google.inject.Injector; | ||
import com.google.inject.servlet.GuiceServletContextListener; | ||
import org.apache.shiro.guice.web.ShiroWebModule; | ||
|
||
import javax.servlet.ServletContext; | ||
import javax.servlet.ServletContextEvent; | ||
|
||
public class SampleShiroGuiceBootstrap extends GuiceServletContextListener { | ||
|
||
private ServletContext servletContext; | ||
|
||
@Override | ||
public void contextInitialized(final ServletContextEvent servletContextEvent) { | ||
this.servletContext = servletContextEvent.getServletContext(); | ||
super.contextInitialized(servletContextEvent); | ||
} | ||
|
||
@Override | ||
protected Injector getInjector() { | ||
return Guice.createInjector(new SampleShiroServletModule(servletContext), ShiroWebModule.guiceFilterModule()); | ||
} | ||
} |
92 changes: 92 additions & 0 deletions
92
...n-tests/guice3/src/main/java/org/apache/shiro/samples/guice/SampleShiroServletModule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one | ||
* or more contributor license agreements. See the NOTICE file | ||
* distributed with this work for additional information | ||
* regarding copyright ownership. The ASF licenses this file | ||
* to you under the Apache License, Version 2.0 (the | ||
* "License"); you may not use this file except in compliance | ||
* with the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, | ||
* software distributed under the License is distributed on an | ||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
* KIND, either express or implied. See the License for the | ||
* specific language governing permissions and limitations | ||
* under the License. | ||
*/ | ||
package org.apache.shiro.samples.guice; | ||
|
||
import com.google.inject.Provides; | ||
import com.google.inject.binder.AnnotatedBindingBuilder; | ||
import com.google.inject.name.Names; | ||
import org.apache.shiro.codec.Base64; | ||
import org.apache.shiro.config.ConfigurationException; | ||
import org.apache.shiro.config.Ini; | ||
import org.apache.shiro.guice.web.ShiroWebModule; | ||
import org.apache.shiro.realm.text.IniRealm; | ||
import org.apache.shiro.web.mgt.CookieRememberMeManager; | ||
import org.apache.shiro.web.mgt.DefaultWebSecurityManager; | ||
import org.apache.shiro.web.mgt.WebSecurityManager; | ||
|
||
import javax.inject.Singleton; | ||
import javax.servlet.ServletContext; | ||
import java.net.MalformedURLException; | ||
import java.net.URL; | ||
|
||
public class SampleShiroServletModule extends ShiroWebModule { | ||
private final ServletContext servletContext; | ||
|
||
public SampleShiroServletModule(ServletContext servletContext) { | ||
super(servletContext); | ||
|
||
this.servletContext = servletContext; | ||
} | ||
|
||
@Override | ||
protected void configureShiroWeb() { | ||
bindConstant().annotatedWith(Names.named("shiro.loginUrl")).to("/login.jsp"); | ||
try { | ||
this.bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class)); | ||
} catch (NoSuchMethodException e) { | ||
addError("Could not locate proper constructor for IniRealm.", e); | ||
} | ||
|
||
this.addFilterChain("/login.jsp", AUTHC); | ||
this.addFilterChain("/logout", LOGOUT); | ||
this.addFilterChain("/account/**", AUTHC); | ||
|
||
this.addFilterChain("/remoting/**", AUTHC, config(ROLES, "b2bClient"), config(PERMS, "remote:invoke:lan,wan")); | ||
} | ||
|
||
@Provides | ||
@Singleton | ||
Ini loadShiroIni() throws MalformedURLException { | ||
URL iniUrl = servletContext.getResource("/WEB-INF/shiro.ini"); | ||
return Ini.fromResourcePath("url:" + iniUrl.toExternalForm()); | ||
} | ||
|
||
@Override | ||
protected void bindWebSecurityManager(AnnotatedBindingBuilder<? super WebSecurityManager> bind) | ||
{ | ||
try | ||
{ | ||
String cipherKey = loadShiroIni().getSectionProperty( "main", "securityManager.rememberMeManager.cipherKey" ); | ||
|
||
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); | ||
CookieRememberMeManager rememberMeManager = new CookieRememberMeManager(); | ||
rememberMeManager.setCipherKey( Base64.decode( cipherKey ) ); | ||
securityManager.setRememberMeManager(rememberMeManager); | ||
bind.toInstance(securityManager); | ||
} | ||
catch ( MalformedURLException e ) | ||
{ | ||
// for now just throw, you could just call | ||
// super.bindWebSecurityManager(bind) if you do not need rememberMe functionality | ||
throw new ConfigurationException( "securityManager.rememberMeManager.cipherKey must be set in shiro.ini." ); | ||
} | ||
|
||
|
||
} | ||
} |
47 changes: 47 additions & 0 deletions
47
integration-tests/guice3/src/main/resources/log4j.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# | ||
# Licensed to the Apache Software Foundation (ASF) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The ASF licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
# | ||
log4j.rootLogger=TRACE, stdout | ||
|
||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender | ||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout | ||
log4j.appender.stdout.layout.ConversionPattern=%d %-5p [%c]: %m%n | ||
|
||
# ============================================================================= | ||
# 3rd Party Libraries | ||
# OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL | ||
# ============================================================================= | ||
# ehcache caching manager: | ||
log4j.logger.net.sf.ehcache=WARN | ||
|
||
# Most all Apache libs: | ||
log4j.logger.org.apache=WARN | ||
|
||
# Quartz Enterprise Scheular (java 'cron' utility) | ||
log4j.logger.org.quartz=WARN | ||
|
||
# ============================================================================= | ||
# Apache Shiro | ||
# ============================================================================= | ||
# Shiro security framework | ||
log4j.logger.org.apache.shiro=TRACE | ||
#log4j.logger.org.apache.shiro.realm.text.PropertiesRealm=INFO | ||
#log4j.logger.org.apache.shiro.cache.ehcache.EhCache=INFO | ||
#log4j.logger.org.apache.shiro.io=INFO | ||
#log4j.logger.org.apache.shiro.web.servlet=INFO | ||
log4j.logger.org.apache.shiro.util.ThreadContext=INFO |
53 changes: 53 additions & 0 deletions
53
integration-tests/guice3/src/main/webapp/WEB-INF/shiro.ini
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# | ||
# Licensed to the Apache Software Foundation (ASF) under one | ||
# or more contributor license agreements. See the NOTICE file | ||
# distributed with this work for additional information | ||
# regarding copyright ownership. The ASF licenses this file | ||
# to you under the Apache License, Version 2.0 (the | ||
# "License"); you may not use this file except in compliance | ||
# with the License. You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, | ||
# software distributed under the License is distributed on an | ||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | ||
# KIND, either express or implied. See the License for the | ||
# specific language governing permissions and limitations | ||
# under the License. | ||
# | ||
|
||
# INI configuration is very powerful and flexible, while still remaining succinct. | ||
# Please http://shiro.apache.org/configuration.html and | ||
# http://shiro.apache.org/web.html for more. | ||
|
||
[main] | ||
shiro.loginUrl = /login.jsp | ||
|
||
# We need to set the cipherKey, if you want the rememberMe cookie to work after restarting or on multiple nodes. | ||
# YOU MUST SET THIS TO A UNIQUE STRING | ||
securityManager.rememberMeManager.cipherKey = kPH+bIxk5D2deZiIxcaaaA== | ||
|
||
[users] | ||
# format: username = password, role1, role2, ..., roleN | ||
root = secret,admin | ||
guest = guest,guest | ||
presidentskroob = 12345,president | ||
darkhelmet = ludicrousspeed,darklord,schwartz | ||
lonestarr = vespa,goodguy,schwartz | ||
|
||
[roles] | ||
# format: roleName = permission1, permission2, ..., permissionN | ||
admin = * | ||
schwartz = lightsaber:* | ||
goodguy = winnebago:drive:eagle5 | ||
|
||
[urls] | ||
# The /login.jsp is not restricted to authenticated users (otherwise no one could log in!), but | ||
# the 'authc' filter must still be specified for it so it can process that url's | ||
# login submissions. It is 'smart' enough to allow those requests through as specified by the | ||
# shiro.loginUrl above. | ||
/login.jsp = authc | ||
/logout = logout | ||
/account/** = authc | ||
/remoting/** = authc, roles[b2bClient], perms["remote:invoke:lan,wan"] |
Oops, something went wrong.