You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2016/02/04 16:32:23 UTC
[3/6] cxf git commit: Strip WebServiceContext from the RequestParser
+ RealmParser
Strip WebServiceContext from the RequestParser + RealmParser
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/aafbcde5
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/aafbcde5
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/aafbcde5
Branch: refs/heads/3.1.x-fixes
Commit: aafbcde58a0ef31e76bd4444b99592ef685456a7
Parents: da40221
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Tue Feb 2 15:33:22 2016 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Feb 4 14:44:07 2016 +0000
----------------------------------------------------------------------
.../java/org/apache/cxf/sts/RealmParser.java | 6 ++--
.../cxf/sts/operation/AbstractOperation.java | 5 +--
.../cxf/sts/operation/TokenRenewOperation.java | 2 +-
.../sts/operation/TokenValidateOperation.java | 2 +-
.../apache/cxf/sts/request/RequestParser.java | 32 +++++++++-----------
.../cxf/sts/operation/CustomRealmParser.java | 6 ++--
.../cxf/sts/request/RequestParserUnitTest.java | 10 ++----
.../cxf/systest/sts/realms/URLRealmParser.java | 6 ++--
.../cxf/systest/sts/common/UriRealmParser.java | 7 ++---
9 files changed, 34 insertions(+), 42 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/main/java/org/apache/cxf/sts/RealmParser.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/RealmParser.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/RealmParser.java
index 75a3a4a..a597ea4 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/RealmParser.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/RealmParser.java
@@ -18,7 +18,7 @@
*/
package org.apache.cxf.sts;
-import javax.xml.ws.WebServiceContext;
+import java.util.Map;
import org.apache.cxf.ws.security.sts.provider.STSException;
@@ -28,8 +28,8 @@ import org.apache.cxf.ws.security.sts.provider.STSException;
public interface RealmParser {
/**
- * Return the realm of the current request given a WebServiceContext object
+ * Return the realm of the current request given a message context map
*/
- String parseRealm(WebServiceContext context) throws STSException;
+ String parseRealm(Map<String, Object> messageContext) throws STSException;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/AbstractOperation.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/AbstractOperation.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/AbstractOperation.java
index b6a827b..c88471e 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/AbstractOperation.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/AbstractOperation.java
@@ -181,7 +181,8 @@ public abstract class AbstractOperation {
stsProperties.configureProperties();
RequestParser requestParser = new RequestParser();
- return requestParser.parseRequest(request, context, stsProperties, claimsManager.getClaimParsers());
+ return requestParser.parseRequest(request, context.getMessageContext(), stsProperties,
+ claimsManager.getClaimParsers());
}
/**
@@ -407,7 +408,7 @@ public abstract class AbstractOperation {
// Get the realm of the request
if (stsProperties.getRealmParser() != null) {
RealmParser realmParser = stsProperties.getRealmParser();
- String realm = realmParser.parseRealm(context);
+ String realm = realmParser.parseRealm(context.getMessageContext());
providerParameters.setRealm(realm);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
index 312631d..c0da0a8 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
@@ -105,7 +105,7 @@ public class TokenRenewOperation extends AbstractOperation implements RenewOpera
String realm = null;
if (stsProperties.getRealmParser() != null) {
RealmParser realmParser = stsProperties.getRealmParser();
- realm = realmParser.parseRealm(context);
+ realm = realmParser.parseRealm(context.getMessageContext());
}
renewerParameters.setRealm(realm);
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
index e84fe2e..49cfb74 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
@@ -101,7 +101,7 @@ public class TokenValidateOperation extends AbstractOperation implements Validat
String realm = null;
if (stsProperties.getRealmParser() != null) {
RealmParser realmParser = stsProperties.getRealmParser();
- realm = realmParser.parseRealm(context);
+ realm = realmParser.parseRealm(context.getMessageContext());
}
validatorParameters.setRealm(realm);
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
index ae1441e..d3e58d5 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/request/RequestParser.java
@@ -30,6 +30,7 @@ import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -40,8 +41,6 @@ import javax.xml.crypto.dsig.keyinfo.KeyInfo;
import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
import javax.xml.crypto.dsig.keyinfo.KeyValue;
import javax.xml.crypto.dsig.keyinfo.X509Data;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
@@ -97,7 +96,7 @@ public class RequestParser {
private static final Logger LOG = LogUtils.getL7dLogger(RequestParser.class);
public RequestRequirements parseRequest(
- RequestSecurityTokenType request, WebServiceContext wsContext, STSPropertiesMBean stsProperties,
+ RequestSecurityTokenType request, Map<String, Object> messageContext, STSPropertiesMBean stsProperties,
List<ClaimsParser> claimsParsers
) throws STSException {
LOG.fine("Parsing RequestSecurityToken");
@@ -114,9 +113,9 @@ public class RequestParser {
}
try {
boolean found =
- parseTokenRequirements(jaxbElement, tokenRequirements, wsContext, claimsParsers);
+ parseTokenRequirements(jaxbElement, tokenRequirements, messageContext, claimsParsers);
if (!found) {
- found = parseKeyRequirements(jaxbElement, keyRequirements, wsContext, stsProperties);
+ found = parseKeyRequirements(jaxbElement, keyRequirements, messageContext, stsProperties);
}
if (!found) {
LOG.log(
@@ -180,7 +179,7 @@ public class RequestParser {
*/
private static boolean parseKeyRequirements(
JAXBElement<?> jaxbElement, KeyRequirements keyRequirements,
- WebServiceContext wsContext, STSPropertiesMBean stsProperties
+ Map<String, Object> messageContext, STSPropertiesMBean stsProperties
) {
if (QNameConstants.AUTHENTICATION_TYPE.equals(jaxbElement.getName())) {
String authenticationType = (String)jaxbElement.getValue();
@@ -208,7 +207,7 @@ public class RequestParser {
keyRequirements.setKeywrapAlgorithm(keywrapAlgorithm);
} else if (QNameConstants.USE_KEY.equals(jaxbElement.getName())) {
UseKeyType useKey = (UseKeyType)jaxbElement.getValue();
- ReceivedKey receivedKey = parseUseKey(useKey, wsContext);
+ ReceivedKey receivedKey = parseUseKey(useKey, messageContext);
keyRequirements.setReceivedKey(receivedKey);
} else if (QNameConstants.ENTROPY.equals(jaxbElement.getName())) {
EntropyType entropyType = (EntropyType)jaxbElement.getValue();
@@ -234,7 +233,7 @@ public class RequestParser {
private static boolean parseTokenRequirements(
JAXBElement<?> jaxbElement,
TokenRequirements tokenRequirements,
- WebServiceContext wsContext,
+ Map<String, Object> messageContext,
List<ClaimsParser> claimsParsers
) {
if (QNameConstants.TOKEN_TYPE.equals(jaxbElement.getName())) {
@@ -262,7 +261,7 @@ public class RequestParser {
ValidateTargetType validateTargetType = (ValidateTargetType)jaxbElement.getValue();
ReceivedToken validateTarget = new ReceivedToken(validateTargetType.getAny());
if (isTokenReferenced(validateTarget.getToken())) {
- Element target = fetchTokenElementFromReference(validateTarget.getToken(), wsContext);
+ Element target = fetchTokenElementFromReference(validateTarget.getToken(), messageContext);
validateTarget = new ReceivedToken(target);
}
tokenRequirements.setValidateTarget(validateTarget);
@@ -270,7 +269,7 @@ public class RequestParser {
CancelTargetType cancelTargetType = (CancelTargetType)jaxbElement.getValue();
ReceivedToken cancelTarget = new ReceivedToken(cancelTargetType.getAny());
if (isTokenReferenced(cancelTarget.getToken())) {
- Element target = fetchTokenElementFromReference(cancelTarget.getToken(), wsContext);
+ Element target = fetchTokenElementFromReference(cancelTarget.getToken(), messageContext);
cancelTarget = new ReceivedToken(target);
}
tokenRequirements.setCancelTarget(cancelTarget);
@@ -278,7 +277,7 @@ public class RequestParser {
RenewTargetType renewTargetType = (RenewTargetType)jaxbElement.getValue();
ReceivedToken renewTarget = new ReceivedToken(renewTargetType.getAny());
if (isTokenReferenced(renewTarget.getToken())) {
- Element target = fetchTokenElementFromReference(renewTarget.getToken(), wsContext);
+ Element target = fetchTokenElementFromReference(renewTarget.getToken(), messageContext);
renewTarget = new ReceivedToken(target);
}
tokenRequirements.setRenewTarget(renewTarget);
@@ -310,13 +309,13 @@ public class RequestParser {
/**
* Parse the UseKey structure to get a ReceivedKey containing a cert/public-key/secret-key.
* @param useKey The UseKey object
- * @param wsContext The WebServiceContext object
+ * @param messageContext The message context object
* @return the ReceivedKey that has been parsed
* @throws STSException
*/
private static ReceivedKey parseUseKey(
UseKeyType useKey,
- WebServiceContext wsContext
+ Map<String, Object> messageContext
) throws STSException {
byte[] x509 = null;
if (useKey.getAny() instanceof JAXBElement<?>) {
@@ -343,7 +342,7 @@ public class RequestParser {
|| obj instanceof SecurityTokenReferenceType) {
SecurityTokenReferenceType strType =
SecurityTokenReferenceType.class.cast(useKeyJaxb.getValue());
- Element token = fetchTokenElementFromReference(strType, wsContext);
+ Element token = fetchTokenElementFromReference(strType, messageContext);
try {
x509 = Base64Utility.decode(token.getTextContent().trim());
LOG.fine("Found X509Certificate UseKey type via reference");
@@ -354,7 +353,7 @@ public class RequestParser {
}
} else if (useKey.getAny() instanceof Element) {
if (isTokenReferenced(useKey.getAny())) {
- Element token = fetchTokenElementFromReference(useKey.getAny(), wsContext);
+ Element token = fetchTokenElementFromReference(useKey.getAny(), messageContext);
try {
x509 = Base64Utility.decode(token.getTextContent().trim());
LOG.fine("Found X509Certificate UseKey type via reference");
@@ -685,7 +684,7 @@ public class RequestParser {
* Method to fetch token from the SecurityTokenReference
*/
private static Element fetchTokenElementFromReference(
- Object targetToken, WebServiceContext wsContext
+ Object targetToken, Map<String, Object> messageContext
) {
// Get the reference URI
String referenceURI = null;
@@ -723,7 +722,6 @@ public class RequestParser {
// Find processed token corresponding to the URI
referenceURI = XMLUtils.getIDFromReference(referenceURI);
- MessageContext messageContext = wsContext.getMessageContext();
final List<WSHandlerResult> handlerResults =
CastUtils.cast((List<?>) messageContext.get(WSHandlerConstants.RECV_RESULTS));
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/CustomRealmParser.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/CustomRealmParser.java b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/CustomRealmParser.java
index ff5b725..b1b121e 100644
--- a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/CustomRealmParser.java
+++ b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/CustomRealmParser.java
@@ -18,8 +18,7 @@
*/
package org.apache.cxf.sts.operation;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
+import java.util.Map;
import org.apache.cxf.sts.RealmParser;
import org.apache.cxf.ws.security.sts.provider.STSException;
@@ -29,8 +28,7 @@ import org.apache.cxf.ws.security.sts.provider.STSException;
*/
public class CustomRealmParser implements RealmParser {
- public String parseRealm(WebServiceContext context) throws STSException {
- MessageContext messageContext = context.getMessageContext();
+ public String parseRealm(Map<String, Object> messageContext) throws STSException {
String endpoint = (String)messageContext.get("url");
if (endpoint.contains("ldap")) {
return "A";
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/sts-core/src/test/java/org/apache/cxf/sts/request/RequestParserUnitTest.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/request/RequestParserUnitTest.java b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/request/RequestParserUnitTest.java
index 63035a5..cbb7273 100644
--- a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/request/RequestParserUnitTest.java
+++ b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/request/RequestParserUnitTest.java
@@ -33,7 +33,6 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
-import org.apache.cxf.jaxws.context.WebServiceContextImpl;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.sts.common.PasswordCallbackHandler;
@@ -133,7 +132,6 @@ public class RequestParserUnitTest extends org.junit.Assert {
// Mock up message context
MessageImpl msg = new MessageImpl();
WrappedMessageContext msgContext = new WrappedMessageContext(msg);
- WebServiceContextImpl wsContext = new WebServiceContextImpl(msgContext);
// Process the security header and store the results in the message context
WSSecurityEngine securityEngine = new WSSecurityEngine();
@@ -146,7 +144,7 @@ public class RequestParserUnitTest extends org.junit.Assert {
resultsList.add(results);
msgContext.put(WSHandlerConstants.RECV_RESULTS, resultsList);
- RequestRequirements requestRequirements = parser.parseRequest(request, wsContext, null, null);
+ RequestRequirements requestRequirements = parser.parseRequest(request, msgContext, null, null);
SCTCanceller sctCanceller = new SCTCanceller();
assertTrue(sctCanceller.canHandleToken(requestRequirements.getTokenRequirements().getCancelTarget()));
@@ -164,7 +162,6 @@ public class RequestParserUnitTest extends org.junit.Assert {
// Mock up message context
MessageImpl msg = new MessageImpl();
WrappedMessageContext msgContext = new WrappedMessageContext(msg);
- WebServiceContextImpl wsContext = new WebServiceContextImpl(msgContext);
// Process the security header and store the results in the message context
WSSecurityEngine securityEngine = new WSSecurityEngine();
@@ -177,7 +174,7 @@ public class RequestParserUnitTest extends org.junit.Assert {
resultsList.add(results);
msgContext.put(WSHandlerConstants.RECV_RESULTS, resultsList);
- RequestRequirements requestRequirements = parser.parseRequest(request, wsContext, null, null);
+ RequestRequirements requestRequirements = parser.parseRequest(request, msgContext, null, null);
SCTValidator sctValidator = new SCTValidator();
assertTrue(sctValidator.canHandleToken(requestRequirements.getTokenRequirements().getValidateTarget()));
@@ -195,7 +192,6 @@ public class RequestParserUnitTest extends org.junit.Assert {
// Mock up message context
MessageImpl msg = new MessageImpl();
WrappedMessageContext msgContext = new WrappedMessageContext(msg);
- WebServiceContextImpl wsContext = new WebServiceContextImpl(msgContext);
// Process the security header and store the results in the message context
WSSecurityEngine securityEngine = new WSSecurityEngine();
@@ -209,7 +205,7 @@ public class RequestParserUnitTest extends org.junit.Assert {
resultsList.add(results);
msgContext.put(WSHandlerConstants.RECV_RESULTS, resultsList);
- RequestRequirements requestRequirements = parser.parseRequest(request, wsContext, null, null);
+ RequestRequirements requestRequirements = parser.parseRequest(request, msgContext, null, null);
assertNotNull(requestRequirements.getKeyRequirements().getReceivedKey().getX509Cert());
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/realms/URLRealmParser.java
----------------------------------------------------------------------
diff --git a/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/realms/URLRealmParser.java b/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/realms/URLRealmParser.java
index 3f40030..425ee4f 100644
--- a/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/realms/URLRealmParser.java
+++ b/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/realms/URLRealmParser.java
@@ -18,7 +18,7 @@
*/
package org.apache.cxf.systest.sts.realms;
-import javax.xml.ws.WebServiceContext;
+import java.util.Map;
import org.apache.cxf.sts.RealmParser;
import org.apache.cxf.ws.security.sts.provider.STSException;
@@ -29,8 +29,8 @@ import org.apache.cxf.ws.security.sts.provider.STSException;
*/
public class URLRealmParser implements RealmParser {
- public String parseRealm(WebServiceContext context) throws STSException {
- String url = (String)context.getMessageContext().get("org.apache.cxf.request.url");
+ public String parseRealm(Map<String, Object> messageContext) throws STSException {
+ String url = (String)messageContext.get("org.apache.cxf.request.url");
if (url.contains("realmA")) {
return "A";
} else if (url.contains("realmB")) {
http://git-wip-us.apache.org/repos/asf/cxf/blob/aafbcde5/services/sts/systests/basic/src/test/java/org/apache/cxf/systest/sts/common/UriRealmParser.java
----------------------------------------------------------------------
diff --git a/services/sts/systests/basic/src/test/java/org/apache/cxf/systest/sts/common/UriRealmParser.java b/services/sts/systests/basic/src/test/java/org/apache/cxf/systest/sts/common/UriRealmParser.java
index 7ce72d4..87f5d7d 100644
--- a/services/sts/systests/basic/src/test/java/org/apache/cxf/systest/sts/common/UriRealmParser.java
+++ b/services/sts/systests/basic/src/test/java/org/apache/cxf/systest/sts/common/UriRealmParser.java
@@ -18,22 +18,21 @@
*/
package org.apache.cxf.systest.sts.common;
+import java.util.Map;
import java.util.StringTokenizer;
-import javax.xml.ws.WebServiceContext;
-
import org.apache.cxf.sts.RealmParser;
import org.apache.cxf.ws.security.sts.provider.STSException;
public class UriRealmParser implements RealmParser {
@Override
- public String parseRealm(WebServiceContext context) throws STSException {
+ public String parseRealm(Map<String, Object> messageContext) throws STSException {
String realm = null;
try {
- String url = (String)context.getMessageContext().get("org.apache.cxf.request.url");
+ String url = (String)messageContext.get("org.apache.cxf.request.url");
StringTokenizer st = new StringTokenizer(url, "/");