Author: slaws
Date: Wed Sep 24 01:13:02 2008
New Revision: 698457
URL: http://svn.apache.org/viewvc?rev=698457&view=rev
Log:
Change message getHeaders() operation to return a list, remove the QoS context
and change various tests to take account of this assuming that the security
information is now passed in the header. This pass the security context is not
consolidated into a single subject. The tests that used to pass just a
principal still do. Also add a delivery mode JMS policy test. Add some ignores.
Added:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
(with props)
Modified:
tuscany/java/sca/demos/bigbank-account/pom.xml
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
tuscany/java/sca/distribution/features/all/ (props changed)
tuscany/java/sca/distribution/features/core/ (props changed)
tuscany/java/sca/distribution/features/ejava/ (props changed)
tuscany/java/sca/distribution/features/manager/ (props changed)
tuscany/java/sca/distribution/features/process/ (props changed)
tuscany/java/sca/distribution/features/repository/ (props changed)
tuscany/java/sca/distribution/features/web20/ (props changed)
tuscany/java/sca/distribution/features/webservice/ (props changed)
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
Modified: tuscany/java/sca/demos/bigbank-account/pom.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/pom.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- tuscany/java/sca/demos/bigbank-account/pom.xml (original)
+++ tuscany/java/sca/demos/bigbank-account/pom.xml Wed Sep 24 01:13:02 2008
@@ -43,7 +43,12 @@
<version>1.4-SNAPSHOT</version>
</dependency>
-
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-policy-security</artifactId>
+ <version>1.4-SNAPSHOT</version>
+ </dependency>
+
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
Modified:
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
(original)
+++
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -13,6 +13,7 @@
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -52,10 +53,11 @@
Object msgBody = msg.getBody();
if (msgBody instanceof Object[]) {
Object args[] = (Object[])msg.getBody();
- if ( msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL)
!= null ) {
-
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
- (String)args[0]);
- }
+ Principal principal = SecurityUtil.getPrincipal(msg);
+ if (principal != null){
+ BigbankCheckingsAcl.authorize(principal,
+ (String)args[0]);
+ }
}
Message responseMsg = null;
Modified:
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
(original)
+++
tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
Wed Sep 24 01:13:02 2008
@@ -23,6 +23,7 @@
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
import org.apache.tuscany.sca.policy.util.PolicyHandler;
/**
@@ -39,10 +40,11 @@
if ( context[count] instanceof Message ) {
Message msg = (Message)context[count];
Object args[] = (Object[])msg.getBody();
- if (
msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) != null ) {
-
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
- (String)args[0]);
- }
+ Principal principal = SecurityUtil.getPrincipal(msg);
+ if (principal != null){
+ BigbankCheckingsAcl.authorize(principal,
+ (String)args[0]);
+ }
}
}
}
Propchange: tuscany/java/sca/distribution/features/all/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/core/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/ejava/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/manager/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/process/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/repository/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/web20/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Propchange: tuscany/java/sca/distribution/features/webservice/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Sep 24 01:13:02 2008
@@ -0,0 +1 @@
+target
Modified:
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
(original)
+++
tuscany/java/sca/itest/builder/src/test/java/org/apache/tuscany/sca/itest/builder/CustomCompositeBuilder.java
Wed Sep 24 01:13:02 2008
@@ -78,7 +78,7 @@
private Composite domainComposite;
private boolean nonWiring;
- protected CustomCompositeBuilder(boolean nonWiring) {
+ public CustomCompositeBuilder(boolean nonWiring) {
this.nonWiring = nonWiring;
}
Modified:
tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
--- tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
(original)
+++ tuscany/java/sca/itest/jms/src/main/resources/policyHeaders/definitions.xml
Wed Sep 24 01:13:02 2008
@@ -22,7 +22,7 @@
xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
xmlns:sca="http://www.osoa.org/xmlns/sca/1.0">
- <policySet name="JMSPolicySet"
+ <policySet name="JMSPolicySet1"
provides="priority"
appliesTo="sca:binding.jms">
<intentMap provides="priority" default="medium">
@@ -37,5 +37,18 @@
</qualifier>
</intentMap>
</policySet>
+
+ <policySet name="JMSPolicySet2"
+ provides="deliveryMode"
+ appliesTo="sca:binding.jms">
+ <intentMap provides="deliveryMode" default="nonPersistent">
+ <qualifier name="persistent">
+ <tuscany:jmsHeader JMSDeliveryMode="PERSISTENT"/>
+ </qualifier>
+ <qualifier name="nonPersistent">
+ <tuscany:jmsHeader JMSDeliveryMode="NON_PERSISTENT"/>
+ </qualifier>
+ </intentMap>
+ </policySet>
</definitions>
\ No newline at end of file
Modified:
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -19,11 +19,15 @@
package org.apache.tuscany.sca.binding.jms.policy.authentication.token;
+import javax.security.auth.Subject;
+
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Interceptor;
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
/**
* Policy handler to handle PolicySet related to Logging with the QName
@@ -63,9 +67,13 @@
if ( policy.getTokenName() != null){
- // add header to Tuscany message
- msg.getHeaders().put(policy.getTokenName().toString(),
- "SomeJMSAuthorizationToken");
+ Subject subject = SecurityUtil.getSubject(msg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject,
TokenPrincipal.class);
+
+ if (principal == null){
+ principal = new TokenPrincipal("SomeJMSAuthorizationToken");
+ subject.getPrincipals().add(principal);
+ }
}
return getNext().invoke(msg);
Modified:
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -66,18 +66,14 @@
}
public Message invoke(Message msg) {
+ Subject subject = SecurityUtil.getSubject(msg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject,
TokenPrincipal.class);
- String token =
(String)msg.getHeaders().get(policy.getTokenName().toString());
-
- if (token != null) {
- System.out.println("Token: " + token);
+ if (principal != null) {
+ System.out.println("Token: " + principal.getName());
// call out here to some 3rd party system to do whatever you
- // need to turn header credentials into an authenticated principal
-
- Subject subject = SecurityUtil.getSubject(msg);
- Principal principal = new TokenPrincipal(token);
- subject.getPrincipals().add(principal);
+ // need to authenticate the principal
}
return getNext().invoke(msg);
Modified:
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
(original)
+++
tuscany/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java
Wed Sep 24 01:13:02 2008
@@ -35,7 +35,7 @@
public class JMSHeaderPolicy implements Policy {
public static final QName JMS_HEADER_POLICY_QNAME = new
QName(Constants.SCA10_TUSCANY_NS, "jmsHeader");
public static final String JMS_HEADER_JMS_TYPE = "JMSType";
- public static final String JMS_HEADER_JMS_CORRELATION_ID =
"JMSDeliveryMode";
+ public static final String JMS_HEADER_JMS_CORRELATION_ID =
"JMSCorrelationID";
public static final String JMS_HEADER_JMS_DELIVERY_MODE =
"JMSDeliveryMode";
public static final String JMS_HEADER_JMS_TIME_TO_LIVE = "JMSTimeToLive";
public static final String JMS_HEADER_JMS_PRIORITY = "JMSPriority";
Modified:
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
(original)
+++
tuscany/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml
Wed Sep 24 01:13:02 2008
@@ -27,14 +27,37 @@
mayProvide="atLeastOnce atMostOnce ordered conversation"
/-->
<!-- PolicyIntents defined by the SCA Runtime Extension for JMS Binding -->
+
<sca:intent name="JMS" constrains="sca:binding.jms">
<sca:description>
Communication through this binding requires JMS
</sca:description>
</sca:intent>
+ <!-- delivery mode -->
+ <intent name="deliveryMode"
+ constrains="sca:binding.jms">
+ <description>
+ This intent is used to indicate the deliver mode
+ of the sent message
+ </description>
+ </intent>
+
+ <intent name="deliveryMode.persistent">
+ <description>
+ Message are sent persistently
+ </description>
+ </intent>
+
+ <intent name="deliveryMode.nonPersistent">
+ <description>
+ Message are sent persistently
+ </description>
+ </intent>
+
+ <!-- priority -->
<intent name="priority"
- constrains="sca:binding">
+ constrains="sca:binding.jms">
<description>
This intent is used to indicate the priority of the
sent message
Modified:
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
(original)
+++
tuscany/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java
Wed Sep 24 01:13:02 2008
@@ -49,7 +49,7 @@
*/
public class PolicyProcessorTestCase {
private final static List<String> SEQ =
- Arrays.asList("<tuscany:jmsHeader
xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" JMSType=\"ABC\"
JMSDeliveryMode=\"PERSISTENT\" JMSDeliveryMode=\"PERSISTENT\"
JMSTimeToLive=\"123\" JMSPriority=\"4\"><tuscany:property
name=\"aProperty\">property value</tuscany:property></tuscany:jmsHeader>",
+ Arrays.asList("<tuscany:jmsHeader
xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\" JMSType=\"ABC\"
JMSDeliveryMode=\"PERSISTENT\" JMSTimeToLive=\"123\"
JMSPriority=\"4\"><tuscany:property name=\"aProperty\">property
value</tuscany:property></tuscany:jmsHeader>",
"<tuscany:jmsTokenAuthentication
xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.0\"
tuscany:tokenName=\"{http://tuscany.apache.org/foo}myname\" />");
@Test
Modified:
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
(original)
+++
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingInvoker.java
Wed Sep 24 01:13:02 2008
@@ -30,6 +30,7 @@
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.NamingException;
+import javax.security.auth.Subject;
import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBindingConstants;
@@ -42,6 +43,8 @@
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
import org.apache.tuscany.sca.runtime.ReferenceParameters;
import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
@@ -401,8 +404,11 @@
}
if (jmsTokenAuthenticationPolicy != null) {
- String token =
(String)tuscanyMsg.getHeaders().get(jmsTokenAuthenticationPolicy.getTokenName().toString());
-
jmsMsg.setStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString(),
token);
+ Subject subject = SecurityUtil.getSubject(tuscanyMsg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject,
TokenPrincipal.class);
+ if (principal != null){
+
jmsMsg.setStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString(),
principal.getName());
+ }
}
}
Modified:
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
(original)
+++
tuscany/java/sca/modules/binding-jms-runtime/src/main/java/org/apache/tuscany/sca/binding/jms/provider/JMSBindingListener.java
Wed Sep 24 01:13:02 2008
@@ -32,6 +32,7 @@
import javax.jms.Session;
import javax.jms.Topic;
import javax.naming.NamingException;
+import javax.security.auth.Subject;
import org.apache.tuscany.sca.assembly.Binding;
import org.apache.tuscany.sca.binding.jms.impl.JMSBinding;
@@ -43,6 +44,8 @@
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.policy.PolicySet;
import org.apache.tuscany.sca.policy.PolicySetAttachPoint;
+import org.apache.tuscany.sca.policy.SecurityUtil;
+import org.apache.tuscany.sca.policy.authentication.token.TokenPrincipal;
import org.apache.tuscany.sca.runtime.EndpointReference;
import org.apache.tuscany.sca.runtime.ReferenceParameters;
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
@@ -205,8 +208,15 @@
if (jmsTokenAuthenticationPolicy != null) {
String token =
requestJMSMsg.getStringProperty(jmsTokenAuthenticationPolicy.getTokenName().toString());
-
tuscanyMsg.getHeaders().put(jmsTokenAuthenticationPolicy.getTokenName().toString(),
- token);
+
+ Subject subject = SecurityUtil.getSubject(tuscanyMsg);
+ TokenPrincipal principal = SecurityUtil.getPrincipal(subject,
TokenPrincipal.class);
+
+ if (principal == null){
+ principal = new TokenPrincipal(token);
+ subject.getPrincipals().add(principal);
+ }
+
}
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationReferencePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -84,8 +84,7 @@
header.setHeaderString("SomeWSAuthorizationToken");
// add header to Tuscany message
- msg.getHeaders().put(policy.getTokenName().toString(),
- header);
+ msg.getHeaders().add(header);
}
return getNext().invoke(msg);
Modified:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/authentication/token/Axis2TokenAuthenticationServicePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -23,6 +23,8 @@
import javax.security.auth.Subject;
+import
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2HeaderPolicyUtil;
+import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeader;
import
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeaderString;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Interceptor;
@@ -66,7 +68,7 @@
public Message invoke(Message msg) {
- Axis2SOAPHeaderString header =
(Axis2SOAPHeaderString)msg.getHeaders().get(policy.getTokenName().toString());
+ Axis2SOAPHeaderString header =
(Axis2SOAPHeaderString)Axis2HeaderPolicyUtil.getHeader(msg,
policy.getTokenName());
if (header != null) {
System.out.println("Token: " + header.getHeaderString());
Added:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java?rev=698457&view=auto
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
(added)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
Wed Sep 24 01:13:02 2008
@@ -0,0 +1,50 @@
+/*
+ * 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.tuscany.sca.binding.ws.axis2.policy.header;
+
+
+import javax.xml.namespace.QName;
+
+import org.apache.tuscany.sca.invocation.Message;
+
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class Axis2HeaderPolicyUtil {
+
+ public static Axis2SOAPHeader getHeader(Message msg, QName headerName){
+
+ Axis2SOAPHeader axis2Header = null;
+
+ for (Object header : msg.getHeaders()){
+ if (header instanceof Axis2SOAPHeader){
+ Axis2SOAPHeader tmpHeader = (Axis2SOAPHeader)header;
+
+ if (tmpHeader.getHeaderName().equals(headerName)){
+ axis2Header = tmpHeader;
+ break;
+ }
+ }
+ }
+
+ return axis2Header;
+ }
+}
Propchange:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderPolicyUtil.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderReferencePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -73,23 +73,7 @@
}
public Message invoke(Message msg) {
- // could call out here to some 3rd party system to get credentials
-
- if ( policy.getHeaderName() != null){
- // create Axis representation of header
- //OMElement header = SOAPFactory
-
- OMFactory factory = OMAbstractFactory.getOMFactory();
- OMNamespace ns1 =
factory.createOMNamespace(policy.getHeaderName().getNamespaceURI(),
-
policy.getHeaderName().getPrefix());
- OMElement header =
factory.createOMElement(policy.getHeaderName().getLocalPart(),ns1);
- OMText headerText =
factory.createOMText(header,"SomeAuthTokenText");
- header.addChild(headerText);
-
- // add header to Tuscany message
- msg.getHeaders().put(policy.getHeaderName().toString(),
- policy);
- }
+ // TODO - not yet implemented
return getNext().invoke(msg);
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2HeaderServicePolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -62,17 +62,7 @@
}
public Message invoke(Message msg) {
-
- OMElement header =
(OMElement)msg.getHeaders().get(policy.getHeaderName().toString());
-
- if (header != null) {
-
- System.out.println("Token: " + header.getText());
- // could call out here to some 3rd part system to do whatever you
- // need to turn credentials into a principal
-
- msg.getQoSContext().put(Message.QOS_CTX_SECURITY_PRINCIPAL,
header.getText());
- }
+ // TODO - not yet implemented
return getNext().invoke(msg);
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2-policy/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/header/Axis2SOAPHeaderString.java
Wed Sep 24 01:13:02 2008
@@ -54,6 +54,7 @@
}
public void setAsSOAPHeaderBlock(OMElement header) {
+ super.setAsSOAPHeaderBlock(header);
headerString = header.getText();
}
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/Axis2ServiceProvider.java
Wed Sep 24 01:13:02 2008
@@ -808,7 +808,7 @@
WSSecurityEngineResult securityResult =
(WSSecurityEngineResult)wshr.getResults().elementAt(count2);
if ( securityResult.get("principal") != null ) {
-
message.getQoSContext().put(Message.QOS_CTX_SECURITY_PRINCIPAL,
securityResult.get("principal"));
+
message.getHeaders().add(securityResult.get("principal"));
}
}
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingBasicAuthenticationConfigurator.java
Wed Sep 24 01:13:02 2008
@@ -114,15 +114,5 @@
BasicAuthenticationPrincipal principal = new
BasicAuthenticationPrincipal(username,
password);
subject.getPrincipals().add(principal);
-
- // Set the http headers
- // This is just an experiment, looking at the alternatives to
extracting
- // username and password in the binding. With HTTP headers in the
message it
- // could be deferred to the interceptor. Asymetric though when
compared with the
- // reference support.
- // how to defined the scheme for message headers?
- msg.getHeaders().put("httpheaders", httpHeaderProperties);
}
-
-
}
Modified:
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
(original)
+++
tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/ws/axis2/policy/configurator/Axis2BindingHeaderConfigurator.java
Wed Sep 24 01:13:02 2008
@@ -27,6 +27,7 @@
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.context.MessageContext;
+import
org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2HeaderPolicyUtil;
import org.apache.tuscany.sca.binding.ws.axis2.policy.header.Axis2SOAPHeader;
import org.apache.tuscany.sca.invocation.Message;
@@ -46,9 +47,11 @@
OMFactory factory = envelope.getOMFactory();
SOAPHeader soapHeader = envelope.getHeader();
- Axis2SOAPHeader header =
(Axis2SOAPHeader)msg.getHeaders().get(headerQName.toString());
+ Axis2SOAPHeader header = Axis2HeaderPolicyUtil.getHeader(msg,
headerQName) ;
- soapHeader.addChild(header.getAsSOAPHeaderBlock(factory));
+ if (header != null){
+ soapHeader.addChild(header.getAsSOAPHeaderBlock(factory));
+ }
}
}
@@ -60,7 +63,7 @@
header.setAsSOAPHeaderBlock(omHeader);
- msg.getHeaders().put(headerQName.toString(), header);
+ msg.getHeaders().add(header);
}
}
Modified:
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
(original)
+++
tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/invocation/Message.java
Wed Sep 24 01:13:02 2008
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.sca.invocation;
+import java.util.List;
import java.util.Map;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -29,8 +30,6 @@
* @version $Rev $Date$
*/
public interface Message {
- String QOS_CTX_SECURITY_PRINCIPAL = "PRINCIPAL";
- String QOS_CTX_SECURITY_SUBJECT = "SUBJECT";
/**
* Returns the body of the message, which will be the payload or
parameters associated with the wire
@@ -109,17 +108,9 @@
void setOperation(Operation op);
/**
- * Returns a map of objects that represents the QoS context that wraps
this message such as
- * invoking authenticated principal and so on.
- *
- * @return
- */
- Map<String, Object> getQoSContext();
-
- /**
* Returns a map of objects that are contained in the message header
*
* @return
*/
- Map<String, Object> getHeaders();
+ List<Object> getHeaders();
}
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/context/RequestContextImpl.java
Wed Sep 24 01:13:02 2008
@@ -48,7 +48,15 @@
}
public Subject getSecuritySubject() {
- return
(Subject)ThreadMessageContext.getMessageContext().getQoSContext().get(Message.QOS_CTX_SECURITY_SUBJECT);
+ Subject subject = null;
+
+ for (Object header :
ThreadMessageContext.getMessageContext().getHeaders()){
+ if (header instanceof Subject){
+ subject = (Subject)header;
+ break;
+ }
+ }
+ return subject;
}
public String getServiceName() {
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/MessageImpl.java
Wed Sep 24 01:13:02 2008
@@ -18,7 +18,9 @@
*/
package org.apache.tuscany.sca.core.invocation;
+import java.util.ArrayList;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import org.apache.tuscany.sca.core.assembly.EndpointReferenceImpl;
@@ -32,12 +34,11 @@
* @version $Rev $Date$
*/
public class MessageImpl implements Message {
- private Map<String, Object> headers = new Hashtable<String, Object>();
+ private List<Object> headers = new ArrayList<Object>();
private Object body;
private Object messageID;
private boolean isFault;
private Operation operation;
- private Map<String, Object> qosContext = new Hashtable<String, Object>();
private EndpointReference from;
private EndpointReference to;
@@ -97,12 +98,8 @@
public void setOperation(Operation op) {
this.operation = op;
}
-
- public Map<String, Object> getQoSContext() {
- return qosContext;
- }
- public Map<String, Object> getHeaders() {
+ public List<Object> getHeaders() {
return headers;
}
Modified:
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
(original)
+++
tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/NonBlockingInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -19,6 +19,7 @@
package org.apache.tuscany.sca.core.invocation;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -186,7 +187,7 @@
return null;
}
- public Map<String, Object> getHeaders() {
+ public List<Object> getHeaders() {
return null;
}
}
Modified:
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
(original)
+++
tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/ImmutableMessage.java
Wed Sep 24 01:13:02 2008
@@ -18,6 +18,7 @@
*/
package org.apache.tuscany.sca.implementation.notification;
+import java.util.List;
import java.util.Map;
import org.apache.tuscany.sca.interfacedef.Operation;
@@ -89,11 +90,8 @@
return null;
}
- public Map<String, Object> getQoSContext() {
- return null;
- }
- public Map<String, Object> getHeaders() {
+ public List<Object> getHeaders() {
return null;
}
Modified:
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
(original)
+++
tuscany/java/sca/modules/policy-security/src/main/java/org/apache/tuscany/sca/policy/SecurityUtil.java
Wed Sep 24 01:13:02 2008
@@ -33,11 +33,19 @@
public class SecurityUtil {
public static Subject getSubject(Message msg){
- Subject subject =
(Subject)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_SUBJECT);
+
+ Subject subject = null;
+
+ for (Object header : msg.getHeaders()){
+ if (header instanceof Subject){
+ subject = (Subject)header;
+ break;
+ }
+ }
if (subject == null){
subject = new Subject();
- msg.getQoSContext().put(Message.QOS_CTX_SECURITY_SUBJECT,
subject);
+ msg.getHeaders().add(subject);
}
return subject;
@@ -52,4 +60,18 @@
return null;
}
+
+ public static Principal getPrincipal(Message msg){
+
+ Principal principal = null;
+
+ for (Object header : msg.getHeaders()){
+ if (header instanceof Principal){
+ principal = (Principal)header;
+ break;
+ }
+ }
+
+ return principal;
+ }
}
Modified:
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
(original)
+++
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthPolicyInterceptor.java
Wed Sep 24 01:13:02 2008
@@ -7,6 +7,7 @@
import org.apache.tuscany.sca.invocation.Invoker;
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -46,10 +47,11 @@
Object msgBody = msg.getBody();
if (msgBody instanceof Object[]) {
Object args[] = (Object[])msg.getBody();
- if ( msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL)
!= null ) {
-
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
- (String)args[0]);
- }
+ Principal principal = SecurityUtil.getPrincipal(msg);
+ if (principal != null){
+ BigbankCheckingsAcl.authorize(principal,
+ (String)args[0]);
+ }
}
Message responseMsg = null;
Modified:
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
URL:
http://svn.apache.org/viewvc/tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java?rev=698457&r1=698456&r2=698457&view=diff
==============================================================================
---
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
(original)
+++
tuscany/java/sca/samples/spring-bigbank-checkaccount/src/main/java/bigbank/account/security/CheckingsDeptAuthorizationPolicyHandler.java
Wed Sep 24 01:13:02 2008
@@ -23,6 +23,7 @@
import org.apache.tuscany.sca.invocation.Message;
import org.apache.tuscany.sca.policy.PolicySet;
+import org.apache.tuscany.sca.policy.SecurityUtil;
import org.apache.tuscany.sca.policy.util.PolicyHandler;
/**
@@ -39,10 +40,11 @@
if ( context[count] instanceof Message ) {
Message msg = (Message)context[count];
Object args[] = (Object[])msg.getBody();
- if (
msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL) != null ) {
-
BigbankCheckingsAcl.authorize((Principal)msg.getQoSContext().get(Message.QOS_CTX_SECURITY_PRINCIPAL),
- (String)args[0]);
- }
+ Principal principal = SecurityUtil.getPrincipal(msg);
+ if (principal != null){
+ BigbankCheckingsAcl.authorize(principal,
+ (String)args[0]);
+ }
}
}
}