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/05/27 04:10:51 UTC
svn commit: r948653 - in
/camel/trunk/components/camel-spring-security/src/main:
java/org/apache/camel/component/spring/security/
java/org/apache/camel/component/spring/security/config/
java/org/apache/camel/component/spring/security/converter/ resourc...
Author: ningjiang
Date: Thu May 27 02:10:51 2010
New Revision: 948653
URL: http://svn.apache.org/viewvc?rev=948653&view=rev
Log:
CAMEL-2756 Introduced plugable AuthenticationConverter into camel-spring-security
Added:
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java (with props)
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java (with props)
Removed:
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/SprintSecurityConverter.java
camel/trunk/components/camel-spring-security/src/main/resources/META-INF/services/
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/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.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=948653&r1=948652&r2=948653&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 Thu May 27 02:10:51 2010
@@ -16,10 +16,14 @@
*/
package org.apache.camel.component.spring.security;
+import javax.security.auth.Subject;
+
import org.apache.camel.CamelAuthorizationException;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
+import org.apache.camel.component.spring.security.converter.AuthenticationConverter;
+import org.apache.camel.component.spring.security.converter.DefaultAuthenticationConverter;
import org.apache.camel.processor.DelegateProcessor;
import org.apache.camel.spi.AuthorizationPolicy;
import org.apache.camel.spi.RouteContext;
@@ -44,6 +48,7 @@ public class SpringSecurityAuthorization
private static final transient Log LOG = LogFactory.getLog(SpringSecurityAuthorizationPolicy.class);
private AccessDecisionManager accessDecisionManager;
private AuthenticationManager authenticationManager;
+ private AuthenticationConverter authenticationConverter;
private ApplicationEventPublisher eventPublisher;
private SpringSecurityAccessPolicy accessPolicy;
@@ -88,7 +93,11 @@ public class SpringSecurityAuthorization
}
protected Authentication getAuthentication(Message message) {
- Authentication answer = message.getHeader(Exchange.AUTHENTICATION, Authentication.class);
+ Subject subject = message.getHeader(Exchange.AUTHENTICATION, Subject.class);
+ Authentication answer = null;
+ if (subject != null) {
+ answer = getAuthenticationConverter().toAuthentication(subject);
+ }
// try to get it from thread context as a fallback
if (answer == null && useThreadSecurityContext) {
answer = SecurityContextHolder.getContext().getAuthentication();
@@ -130,6 +139,8 @@ public class SpringSecurityAuthorization
authentication = authenticationManager.authenticate(authentication);
+ System.out.println("The authenitcation is " + authentication);
+
if (LOG.isDebugEnabled()) {
LOG.debug("Successfully Authenticated: " + authentication);
}
@@ -142,6 +153,23 @@ public class SpringSecurityAuthorization
this.eventPublisher.publishEvent(event);
}
}
+
+ public AuthenticationConverter getAuthenticationConverter() {
+ if (authenticationConverter == null) {
+ synchronized (this) {
+ if (authenticationConverter != null) {
+ return authenticationConverter;
+ } else {
+ authenticationConverter = new DefaultAuthenticationConverter();
+ }
+ }
+ }
+ return authenticationConverter;
+ }
+
+ public void setAuthenticationConverter(AuthenticationConverter converter) {
+ this.authenticationConverter = converter;
+ }
public AccessDecisionManager getAccessDecisionManager() {
return accessDecisionManager;
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java?rev=948653&r1=948652&r2=948653&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java (original)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java Thu May 27 02:10:51 2010
@@ -45,6 +45,7 @@ public class SpringSecurityAuthorization
setReferenceIfAttributeDefine(builder, element, "accessDecisionManager");
setReferenceIfAttributeDefine(builder, element, "authenticationManager");
+ setReferenceIfAttributeDefine(builder, element, "authenticationConverter");
BeanDefinitionBuilder accessPolicyBuilder = BeanDefinitionBuilder.genericBeanDefinition(
SpringSecurityAccessPolicy.class.getCanonicalName());
Added: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java?rev=948653&view=auto
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java (added)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java Thu May 27 02:10:51 2010
@@ -0,0 +1,27 @@
+/**
+ * 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.camel.component.spring.security.converter;
+
+import javax.security.auth.Subject;
+
+import org.springframework.security.Authentication;
+
+public interface AuthenticationConverter {
+
+ Authentication toAuthentication(Subject subject);
+
+}
Propchange: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/AuthenticationConverter.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java?rev=948653&view=auto
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java (added)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java Thu May 27 02:10:51 2010
@@ -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.
+ */
+package org.apache.camel.component.spring.security.converter;
+
+import java.util.Set;
+
+import javax.security.auth.Subject;
+
+import org.springframework.security.Authentication;
+
+public class DefaultAuthenticationConverter implements AuthenticationConverter {
+
+ public Authentication toAuthentication(Subject subject) {
+ if (subject == null || subject.getPrincipals().size() == 0) {
+ return null;
+ }
+ Set<Authentication> authentications = subject.getPrincipals(Authentication.class);
+ if (authentications.size() > 0) {
+ // just return the first one
+ return authentications.iterator().next();
+ } else {
+ return convertToAuthentication(subject);
+ }
+ }
+
+ /**
+ * You can add the customer convert code here
+ */
+ protected Authentication convertToAuthentication(Subject subject) {
+ return null;
+ }
+
+}
Propchange: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/converter/DefaultAuthenticationConverter.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
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=948653&r1=948652&r2=948653&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 Thu May 27 02:10:51 2010
@@ -32,9 +32,10 @@
<xsd:element name="authorizationPolicy">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:ID" use="required" />
- <xsd:attribute name="access" type="xsd:string" />
- <xsd:attribute name="authenticationManager" type="xsd:string" />
+ <xsd:attribute name="access" type="xsd:string" />
<xsd:attribute name="accessDecisionManager" type="xsd:string" />
+ <xsd:attribute name="authenticationConverter" type="xsd:string" />
+ <xsd:attribute name="authenticationManager" type="xsd:string" />
<xsd:attribute name="useThreadSecurityContext" type="xsd:boolean" default="true"/>
<xsd:attribute name="alwaysReauthenticate" type="xsd:boolean" default="false"/>
</xsd:complexType>