Author: ningjiang Date: Wed Apr 14 09:34:30 2010 New Revision: 933892 URL: http://svn.apache.org/viewvc?rev=933892&view=rev Log: CAMEL-2643 Supported to get the authentication object from SecurityContextHolder
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java camel/trunk/components/camel-spring-security/src/main/resources/schema/camel-spring-security.xsd Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java?rev=933892&r1=933891&r2=933892&view=diff ============================================================================== --- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java (original) +++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java Wed Apr 14 09:34:30 2010 @@ -34,6 +34,7 @@ import org.springframework.security.Auth import org.springframework.security.AuthenticationManager; import org.springframework.security.ConfigAttributeDefinition; import org.springframework.security.SpringSecurityException; +import org.springframework.security.context.SecurityContextHolder; import org.springframework.security.event.authorization.AuthorizationFailureEvent; import org.springframework.security.event.authorization.AuthorizedEvent; import org.springframework.util.Assert; @@ -46,6 +47,7 @@ public class SpringSecurityAuthorization private SpringSecurityAccessPolicy accessPolicy; private boolean alwaysReauthenticate; + private boolean useThreadSecurityContext = true; public Processor wrap(RouteContext routeContext, Processor processor) { @@ -57,8 +59,8 @@ public class SpringSecurityAuthorization ConfigAttributeDefinition attributes = accessPolicy.getConfigAttributeDefinition(); try { - - Authentication authenticated = authenticateIfRequired(exchange.getProperty(Exchange.AUTHENTICATION, Authentication.class)); + + Authentication authenticated = authenticateIfRequired(getAuthentication(exchange)); // Attempt authorization with exchange try { @@ -78,6 +80,19 @@ public class SpringSecurityAuthorization } } + protected Authentication getAuthentication(Exchange exchange) { + Authentication answer = exchange.getProperty(Exchange.AUTHENTICATION, Authentication.class); + // try to get it from thread context as a fallback + if (answer == null && useThreadSecurityContext) { + answer = SecurityContextHolder.getContext().getAuthentication(); + if (LOG.isDebugEnabled()) { + LOG.debug("Get the authentication from SecurityContextHolder"); + } + } + + return answer; + } + private class AuthorizeDelegateProcess extends DelegateProcessor { AuthorizeDelegateProcess(Processor processor) { @@ -150,6 +165,14 @@ public class SpringSecurityAuthorization public void setAlwaysReauthenticate(boolean alwaysReauthenticate) { this.alwaysReauthenticate = alwaysReauthenticate; } + + public boolean isUseThreadSecurityContext() { + return useThreadSecurityContext; + } + + public void setUseThreadSecurityContext(boolean useThreadSecurityContext) { + this.useThreadSecurityContext = useThreadSecurityContext; + } public void setAuthenticationManager(AuthenticationManager newManager) { this.authenticationManager = newManager; Modified: camel/trunk/components/camel-spring-security/src/main/resources/schema/camel-spring-security.xsd URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/resources/schema/camel-spring-security.xsd?rev=933892&r1=933891&r2=933892&view=diff ============================================================================== --- camel/trunk/components/camel-spring-security/src/main/resources/schema/camel-spring-security.xsd (original) +++ camel/trunk/components/camel-spring-security/src/main/resources/schema/camel-spring-security.xsd Wed Apr 14 09:34:30 2010 @@ -17,7 +17,7 @@ specific language governing permissions and limitations under the License. --> -<xsd:schema xmlns="http://camel.apache.org/schema/spring/integration" +<xsd:schema xmlns="http://camel.apache.org/schema/spring-security" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"