You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/04/14 11:34:30 UTC
svn commit: r933892 - in
/camel/trunk/components/camel-spring-security/src/main:
java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
resources/schema/camel-spring-security.xsd
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"