From 8d6c3f989bb2f359091468534730080425afa8c4 Mon Sep 17 00:00:00 2001 From: slaws Date: Wed, 24 Sep 2008 08:13:02 +0000 Subject: 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. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@698457 13f79535-47bb-0310-9956-ffa450edef68 --- ...enAuthenticationReferencePolicyInterceptor.java | 14 +++++++++--- ...okenAuthenticationServicePolicyInterceptor.java | 14 +++++------- .../binding/jms/policy/header/JMSHeaderPolicy.java | 2 +- .../tuscany/sca/binding/jms/policy/definitions.xml | 25 +++++++++++++++++++++- .../jms/policy/PolicyProcessorTestCase.java | 2 +- 5 files changed, 42 insertions(+), 15 deletions(-) (limited to 'java/sca/modules/binding-jms-policy/src') diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java index 98a164c612..17b5da42be 100644 --- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java +++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationReferencePolicyInterceptor.java @@ -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 @@ public class JMSTokenAuthenticationReferencePolicyInterceptor implements Interce 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); diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java index 1280abc3e0..ec3be6e165 100644 --- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java +++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/authentication/token/JMSTokenAuthenticationServicePolicyInterceptor.java @@ -66,18 +66,14 @@ public class JMSTokenAuthenticationServicePolicyInterceptor implements Intercept } 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); diff --git a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java index e109c52fba..1c16e3fa1b 100644 --- a/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java +++ b/java/sca/modules/binding-jms-policy/src/main/java/org/apache/tuscany/sca/binding/jms/policy/header/JMSHeaderPolicy.java @@ -35,7 +35,7 @@ import org.apache.tuscany.sca.policy.Policy; 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"; diff --git a/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml b/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml index 044ed834e6..66ec011844 100644 --- a/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml +++ b/java/sca/modules/binding-jms-policy/src/main/resources/org/apache/tuscany/sca/binding/jms/policy/definitions.xml @@ -27,14 +27,37 @@ mayProvide="atLeastOnce atMostOnce ordered conversation" /--> + Communication through this binding requires JMS + + + + This intent is used to indicate the deliver mode + of the sent message + + + + + + Message are sent persistently + + + + + + Message are sent persistently + + + + + constrains="sca:binding.jms"> This intent is used to indicate the priority of the sent message diff --git a/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java b/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java index 4c0e3d2e11..a9da07ca7d 100644 --- a/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java +++ b/java/sca/modules/binding-jms-policy/src/test/java/org/apache/tuscany/sca/binding/jms/policy/PolicyProcessorTestCase.java @@ -49,7 +49,7 @@ import org.junit.Test; */ public class PolicyProcessorTestCase { private final static List SEQ = - Arrays.asList("property value", + Arrays.asList("property value", ""); @Test -- cgit v1.2.3