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 2012/04/12 18:18:01 UTC
svn commit: r1325349 [1/2] - in /cxf/trunk:
rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/
rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/
services/sts/sts-core/src/main/java/org/apache/cxf/sts/ope...
Author: coheigea
Date: Thu Apr 12 16:18:00 2012
New Revision: 1325349
URL: http://svn.apache.org/viewvc?rev=1325349&view=rev
Log:
[CXF-4157] - Fixed batch processing in the STS and added a systest
Added:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RequestCollectionOperation.java
- copied, changed from r1325343, cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRequestCollectionOperation.java
cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/
cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/BatchRequest.java
cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SAMLBatchUnitTest.java
cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/STSServer.java
- copied, changed from r1325343, cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java
cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SimpleBatchSTSClient.java
cxf/trunk/services/sts/systests/advanced/src/test/resources/org/apache/cxf/systest/sts/batch/
cxf/trunk/services/sts/systests/advanced/src/test/resources/org/apache/cxf/systest/sts/batch/cxf-client-unit.xml
cxf/trunk/services/sts/systests/advanced/src/test/resources/org/apache/cxf/systest/sts/batch/cxf-sts.xml
cxf/trunk/services/sts/systests/advanced/src/test/resources/org/apache/cxf/systest/sts/batch/ws-trust-1.4-service.wsdl
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenService.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceImpl.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceProvider.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/CancelOperation.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RenewOperation.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/ValidateOperation.java
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenCancelOperation.java
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
cxf/trunk/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/ValidateUnitTest.java
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenService.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenService.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenService.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenService.java Thu Apr 12 16:18:00 2012
@@ -69,19 +69,6 @@ public interface SecurityTokenService {
RequestSecurityTokenType request
);
- @WebResult(name = "RequestSecurityTokenResponseCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
- partName = "responseCollection")
- @Action(input = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchIssue",
- output = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchIssue")
- @WebMethod(operationName = "Issue")
- RequestSecurityTokenResponseCollectionType issue(
- @WebParam(partName = "requestCollection",
- name = "RequestSecurityTokenCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
- RequestSecurityTokenCollectionType requestCollection
- );
-
@WebResult(name = "RequestSecurityTokenResponse",
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
partName = "response")
@@ -106,18 +93,6 @@ public interface SecurityTokenService {
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
RequestSecurityTokenType request
);
-
- @WebResult(name = "RequestSecurityTokenResponseCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
- partName = "responseCollection")
- @Action(input = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchCancel",
- output = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchCancel")
- @WebMethod(operationName = "Cancel")
- RequestSecurityTokenResponseCollectionType cancel(
- @WebParam(partName = "requestCollection", name = "RequestSecurityTokenCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
- RequestSecurityTokenCollectionType requestCollection
- );
@WebResult(name = "RequestSecurityTokenResponse",
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
@@ -130,15 +105,14 @@ public interface SecurityTokenService {
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
RequestSecurityTokenType request
);
-
+
@WebResult(name = "RequestSecurityTokenResponseCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
+ targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
partName = "responseCollection")
- @Action(input = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchValidate",
- output = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchValidate")
- @WebMethod(operationName = "Validate")
- RequestSecurityTokenResponseCollectionType validate(
- @WebParam(partName = "requestCollection", name = "RequestSecurityTokenCollection",
+ @WebMethod(operationName = "RequestCollection")
+ RequestSecurityTokenResponseCollectionType requestCollection(
+ @WebParam(partName = "requestCollection",
+ name = "RequestSecurityTokenCollection",
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
RequestSecurityTokenCollectionType requestCollection
);
@@ -155,17 +129,4 @@ public interface SecurityTokenService {
targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
RequestSecurityTokenType request
);
-
- @WebResult(name = "RequestSecurityTokenResponseCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512",
- partName = "responseCollection")
- @Action(input = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchRenew",
- output = "http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchRenew")
- @WebMethod(operationName = "Renew")
- RequestSecurityTokenResponseCollectionType renew(
- @WebParam(partName = "requestCollection",
- name = "RequestSecurityTokenCollection",
- targetNamespace = "http://docs.oasis-open.org/ws-sx/ws-trust/200512")
- RequestSecurityTokenCollectionType requestCollection
- );
-}
+}
\ No newline at end of file
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceImpl.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceImpl.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceImpl.java Thu Apr 12 16:18:00 2012
@@ -36,6 +36,7 @@ import org.apache.cxf.ws.security.sts.pr
import org.apache.cxf.ws.security.sts.provider.operation.IssueSingleOperation;
import org.apache.cxf.ws.security.sts.provider.operation.KeyExchangeTokenOperation;
import org.apache.cxf.ws.security.sts.provider.operation.RenewOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.RequestCollectionOperation;
import org.apache.cxf.ws.security.sts.provider.operation.ValidateOperation;
@@ -46,6 +47,7 @@ public class SecurityTokenServiceImpl im
private IssueSingleOperation issueSingleOperation;
private KeyExchangeTokenOperation keyExchangeTokenOperation;
private RenewOperation renewOperation;
+ private RequestCollectionOperation requestCollectionOperation;
private ValidateOperation validateOperation;
@Resource
@@ -72,6 +74,11 @@ public class SecurityTokenServiceImpl im
this.renewOperation = renewOperation;
}
+ public void setRequestCollectionOperation(
+ RequestCollectionOperation requestCollectionOperation) {
+ this.requestCollectionOperation = requestCollectionOperation;
+ }
+
public void setValidateOperation(ValidateOperation validateOperation) {
this.validateOperation = validateOperation;
}
@@ -83,14 +90,14 @@ public class SecurityTokenServiceImpl im
}
return validateOperation.validate(request, context);
}
-
- public RequestSecurityTokenResponseCollectionType validate(
- RequestSecurityTokenCollectionType requestCollection
- ) {
- if (validateOperation == null) {
- throwUnsupportedOperation("Validate");
+
+
+ public RequestSecurityTokenResponseCollectionType requestCollection(
+ RequestSecurityTokenCollectionType requestCollection) {
+ if (requestCollectionOperation == null) {
+ throwUnsupportedOperation("RequestCollection");
}
- return validateOperation.validate(requestCollection, context);
+ return requestCollectionOperation.requestCollection(requestCollection, context);
}
public RequestSecurityTokenResponseType keyExchangeToken(
@@ -109,15 +116,6 @@ public class SecurityTokenServiceImpl im
return issueOperation.issue(request, context);
}
- public RequestSecurityTokenResponseCollectionType issue(
- RequestSecurityTokenCollectionType requestCollection
- ) {
- if (issueOperation == null) {
- throwUnsupportedOperation("Issue");
- }
- return issueOperation.issue(requestCollection, context);
- }
-
public RequestSecurityTokenResponseType issueSingle(
RequestSecurityTokenType request) {
if (issueSingleOperation == null) {
@@ -133,15 +131,6 @@ public class SecurityTokenServiceImpl im
}
return cancelOperation.cancel(request, context);
}
-
- public RequestSecurityTokenResponseCollectionType cancel(
- RequestSecurityTokenCollectionType requestCollection
- ) {
- if (cancelOperation == null) {
- throwUnsupportedOperation("Cancel");
- }
- return cancelOperation.cancel(requestCollection, context);
- }
public RequestSecurityTokenResponseType renew(
RequestSecurityTokenType request) {
@@ -151,15 +140,6 @@ public class SecurityTokenServiceImpl im
return renewOperation.renew(request, context);
}
- public RequestSecurityTokenResponseCollectionType renew(
- RequestSecurityTokenCollectionType requestCollection
- ) {
- if (renewOperation == null) {
- throwUnsupportedOperation("Renew");
- }
- return renewOperation.renew(requestCollection, context);
- }
-
private void throwUnsupportedOperation(String string) {
try {
@@ -171,4 +151,4 @@ public class SecurityTokenServiceImpl im
}
}
-}
+}
\ No newline at end of file
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceProvider.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceProvider.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/SecurityTokenServiceProvider.java Thu Apr 12 16:18:00 2012
@@ -54,6 +54,7 @@ import org.apache.cxf.ws.security.sts.pr
import org.apache.cxf.ws.security.sts.provider.operation.IssueSingleOperation;
import org.apache.cxf.ws.security.sts.provider.operation.KeyExchangeTokenOperation;
import org.apache.cxf.ws.security.sts.provider.operation.RenewOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.RequestCollectionOperation;
import org.apache.cxf.ws.security.sts.provider.operation.ValidateOperation;
@ServiceMode(value = Service.Mode.PAYLOAD)
@@ -63,20 +64,14 @@ public class SecurityTokenServiceProvide
private static final String WSTRUST_REQUESTTYPE_ELEMENTNAME = "RequestType";
private static final String WSTRUST_REQUESTTYPE_ISSUE = WSTRUST_13_NAMESPACE
+ "/Issue";
- private static final String WSTRUST_REQUESTTYPE_BATCH_ISSUE = WSTRUST_13_NAMESPACE
- + "/BatchIssue";
private static final String WSTRUST_REQUESTTYPE_CANCEL = WSTRUST_13_NAMESPACE
+ "/Cancel";
- private static final String WSTRUST_REQUESTTYPE_BATCH_CANCEL = WSTRUST_13_NAMESPACE
- + "/BatchCancel";
private static final String WSTRUST_REQUESTTYPE_RENEW = WSTRUST_13_NAMESPACE
+ "/Renew";
- private static final String WSTRUST_REQUESTTYPE_BATCH_RENEW = WSTRUST_13_NAMESPACE
- + "/BatchRenew";
private static final String WSTRUST_REQUESTTYPE_VALIDATE = WSTRUST_13_NAMESPACE
+ "/Validate";
- private static final String WSTRUST_REQUESTTYPE_BATCH_VALIDATE = WSTRUST_13_NAMESPACE
- + "/BatchValidate";
+ private static final String WSTRUST_REQUESTTYPE_REQUESTCOLLECTION = WSTRUST_13_NAMESPACE
+ + "/RequestCollection";
private static final String WSTRUST_REQUESTTYPE_KEYEXCHANGETOKEN = WSTRUST_13_NAMESPACE
+ "/KeyExchangeToken";
@@ -88,45 +83,30 @@ public class SecurityTokenServiceProvide
WebServiceContext.class);
OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_ISSUE, m);
- m = IssueOperation.class.getDeclaredMethod("issue",
- RequestSecurityTokenCollectionType.class,
- WebServiceContext.class);
- OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_BATCH_ISSUE, m);
-
m = CancelOperation.class.getDeclaredMethod("cancel",
RequestSecurityTokenType.class,
WebServiceContext.class);
OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_CANCEL, m);
- m = CancelOperation.class.getDeclaredMethod("cancel",
- RequestSecurityTokenCollectionType.class,
- WebServiceContext.class);
- OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_BATCH_CANCEL, m);
-
m = RenewOperation.class.getDeclaredMethod("renew",
RequestSecurityTokenType.class,
WebServiceContext.class);
OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_RENEW, m);
- m = RenewOperation.class.getDeclaredMethod("renew",
- RequestSecurityTokenCollectionType.class,
- WebServiceContext.class);
- OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_BATCH_RENEW, m);
-
m = ValidateOperation.class.getDeclaredMethod("validate",
RequestSecurityTokenType.class,
WebServiceContext.class);
OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_VALIDATE, m);
- m = ValidateOperation.class.getDeclaredMethod("validate",
- RequestSecurityTokenCollectionType.class,
- WebServiceContext.class);
- OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_BATCH_VALIDATE, m);
-
m = KeyExchangeTokenOperation.class.getDeclaredMethod("keyExchangeToken",
RequestSecurityTokenType.class,
WebServiceContext.class);
OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_KEYEXCHANGETOKEN, m);
+
+ m = RequestCollectionOperation.class.getDeclaredMethod("requestCollection",
+ RequestSecurityTokenCollectionType.class,
+ WebServiceContext.class);
+ OPERATION_METHODS.put(WSTRUST_REQUESTTYPE_REQUESTCOLLECTION, m);
} catch (Exception ex) {
ex.printStackTrace();
}
@@ -142,6 +122,7 @@ public class SecurityTokenServiceProvide
private IssueSingleOperation issueSingleOperation;
private KeyExchangeTokenOperation keyExchangeTokenOperation;
private RenewOperation renewOperation;
+ private RequestCollectionOperation requestCollectionOperation;
private ValidateOperation validateOperation;
private Map<String, Object> operationMap = new HashMap<String, Object>();
@@ -199,6 +180,13 @@ public class SecurityTokenServiceProvide
operationMap.put(WSTRUST_REQUESTTYPE_RENEW, renewOperation);
}
+ public void setRequestCollectionOperation(
+ RequestCollectionOperation requestCollectionOperation) {
+ this.requestCollectionOperation = requestCollectionOperation;
+ operationMap.put(WSTRUST_REQUESTTYPE_REQUESTCOLLECTION,
+ requestCollectionOperation);
+ }
+
public void setValidateOperation(ValidateOperation validateOperation) {
this.validateOperation = validateOperation;
operationMap.put(WSTRUST_REQUESTTYPE_VALIDATE, validateOperation);
@@ -213,31 +201,8 @@ public class SecurityTokenServiceProvide
Object operationImpl = null;
Method method = null;
if (obj instanceof RequestSecurityTokenCollectionType) {
- RequestSecurityTokenCollectionType rstCollection = (RequestSecurityTokenCollectionType)obj;
- List<RequestSecurityTokenType> typeList = rstCollection.getRequestSecurityToken();
- String requestType = null;
- for (RequestSecurityTokenType rst : typeList) {
- List<?> objectList = rst.getAny();
- for (Object o : objectList) {
- if (o instanceof JAXBElement) {
- QName qname = ((JAXBElement<?>) o).getName();
- if (qname.equals(new QName(WSTRUST_13_NAMESPACE,
- WSTRUST_REQUESTTYPE_ELEMENTNAME))) {
- String val = ((JAXBElement<?>) o).getValue().toString();
- // All batch requests must have the same RequestType
- if (requestType != null && !requestType.equals(val)) {
- operationImpl = null;
- method = null;
- break;
- } else {
- requestType = val;
- }
- operationImpl = operationMap.get(val);
- method = OPERATION_METHODS.get(val);
- }
- }
- }
- }
+ operationImpl = operationMap.get(WSTRUST_REQUESTTYPE_REQUESTCOLLECTION);
+ method = OPERATION_METHODS.get(WSTRUST_REQUESTTYPE_REQUESTCOLLECTION);
} else {
RequestSecurityTokenType rst = (RequestSecurityTokenType)obj;
List<?> objectList = rst.getAny();
@@ -248,7 +213,7 @@ public class SecurityTokenServiceProvide
WSTRUST_REQUESTTYPE_ELEMENTNAME))) {
String val = ((JAXBElement<?>) o).getValue().toString();
operationImpl = operationMap.get(val);
- method = OPERATION_METHODS.get(val);
+ method = OPERATION_METHODS.get(val);
break;
}
}
@@ -339,8 +304,12 @@ public class SecurityTokenServiceProvide
return renewOperation;
}
+ public RequestCollectionOperation getRequestCollectionOperation() {
+ return requestCollectionOperation;
+ }
+
public ValidateOperation getValidateOperation() {
return validateOperation;
}
-}
+}
\ No newline at end of file
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/CancelOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/CancelOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/CancelOperation.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/CancelOperation.java Thu Apr 12 16:18:00 2012
@@ -21,8 +21,6 @@ package org.apache.cxf.ws.security.sts.p
import javax.xml.ws.WebServiceContext;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
@@ -31,7 +29,4 @@ public interface CancelOperation {
RequestSecurityTokenResponseType cancel(RequestSecurityTokenType request,
WebServiceContext context);
- RequestSecurityTokenResponseCollectionType cancel(RequestSecurityTokenCollectionType request,
- WebServiceContext context);
-
}
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java Thu Apr 12 16:18:00 2012
@@ -21,7 +21,6 @@ package org.apache.cxf.ws.security.sts.p
import javax.xml.ws.WebServiceContext;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
@@ -31,8 +30,4 @@ public interface IssueOperation {
RequestSecurityTokenType request,
WebServiceContext context);
- RequestSecurityTokenResponseCollectionType issue(
- RequestSecurityTokenCollectionType requestCollection,
- WebServiceContext context);
-
}
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RenewOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RenewOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RenewOperation.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RenewOperation.java Thu Apr 12 16:18:00 2012
@@ -21,8 +21,6 @@ package org.apache.cxf.ws.security.sts.p
import javax.xml.ws.WebServiceContext;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
@@ -31,6 +29,4 @@ public interface RenewOperation {
RequestSecurityTokenResponseType renew(RequestSecurityTokenType request,
WebServiceContext context);
- RequestSecurityTokenResponseCollectionType renew(RequestSecurityTokenCollectionType request,
- WebServiceContext context);
}
Copied: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RequestCollectionOperation.java (from r1325343, cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RequestCollectionOperation.java?p2=cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RequestCollectionOperation.java&p1=cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java&r1=1325343&r2=1325349&rev=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/RequestCollectionOperation.java Thu Apr 12 16:18:00 2012
@@ -23,16 +23,11 @@ import javax.xml.ws.WebServiceContext;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
-public interface IssueOperation {
+public interface RequestCollectionOperation {
- RequestSecurityTokenResponseCollectionType issue(
- RequestSecurityTokenType request,
- WebServiceContext context);
-
- RequestSecurityTokenResponseCollectionType issue(
+ RequestSecurityTokenResponseCollectionType requestCollection(
RequestSecurityTokenCollectionType requestCollection,
WebServiceContext context);
-}
+}
\ No newline at end of file
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/ValidateOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/ValidateOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/ValidateOperation.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/ValidateOperation.java Thu Apr 12 16:18:00 2012
@@ -21,8 +21,6 @@ package org.apache.cxf.ws.security.sts.p
import javax.xml.ws.WebServiceContext;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
@@ -31,7 +29,4 @@ public interface ValidateOperation {
RequestSecurityTokenResponseType validate(RequestSecurityTokenType request,
WebServiceContext context);
- RequestSecurityTokenResponseCollectionType validate(RequestSecurityTokenCollectionType request,
- WebServiceContext context);
-
}
Modified: cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenCancelOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenCancelOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenCancelOperation.java (original)
+++ cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenCancelOperation.java Thu Apr 12 16:18:00 2012
@@ -39,8 +39,6 @@ import org.apache.cxf.sts.token.cancelle
import org.apache.cxf.sts.token.canceller.TokenCancellerParameters;
import org.apache.cxf.sts.token.canceller.TokenCancellerResponse;
import org.apache.cxf.ws.security.sts.provider.STSException;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
import org.apache.cxf.ws.security.sts.provider.model.RequestedTokenCancelledType;
@@ -64,18 +62,6 @@ public class TokenCancelOperation extend
return tokencancellers;
}
- public RequestSecurityTokenResponseCollectionType cancel(
- RequestSecurityTokenCollectionType requestCollection, WebServiceContext context
- ) {
- RequestSecurityTokenResponseCollectionType responseCollection =
- QNameConstants.WS_TRUST_FACTORY.createRequestSecurityTokenResponseCollectionType();
- for (RequestSecurityTokenType request : requestCollection.getRequestSecurityToken()) {
- RequestSecurityTokenResponseType response = cancel(request, context);
- responseCollection.getRequestSecurityTokenResponse().add(response);
- }
- return responseCollection;
- }
-
public RequestSecurityTokenResponseType cancel(
RequestSecurityTokenType request, WebServiceContext context
) {
Modified: cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java (original)
+++ cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRenewOperation.java Thu Apr 12 16:18:00 2012
@@ -45,8 +45,6 @@ import org.apache.cxf.sts.token.renewer.
import org.apache.cxf.sts.token.validator.TokenValidatorResponse;
import org.apache.cxf.ws.security.sts.provider.STSException;
import org.apache.cxf.ws.security.sts.provider.model.LifetimeType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
import org.apache.cxf.ws.security.sts.provider.model.RequestedReferenceType;
@@ -71,18 +69,6 @@ public class TokenRenewOperation extends
return tokenRenewers;
}
- public RequestSecurityTokenResponseCollectionType renew(
- RequestSecurityTokenCollectionType requestCollection, WebServiceContext context
- ) {
- RequestSecurityTokenResponseCollectionType responseCollection =
- QNameConstants.WS_TRUST_FACTORY.createRequestSecurityTokenResponseCollectionType();
- for (RequestSecurityTokenType request : requestCollection.getRequestSecurityToken()) {
- RequestSecurityTokenResponseType response = renew(request, context);
- responseCollection.getRequestSecurityTokenResponse().add(response);
- }
- return responseCollection;
- }
-
public RequestSecurityTokenResponseType renew(
RequestSecurityTokenType request, WebServiceContext context
) {
Added: cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRequestCollectionOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRequestCollectionOperation.java?rev=1325349&view=auto
==============================================================================
--- cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRequestCollectionOperation.java (added)
+++ cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenRequestCollectionOperation.java Thu Apr 12 16:18:00 2012
@@ -0,0 +1,181 @@
+/**
+ * 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.cxf.sts.operation;
+
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+import javax.xml.ws.WebServiceContext;
+
+import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.sts.QNameConstants;
+import org.apache.cxf.sts.STSConstants;
+import org.apache.cxf.ws.security.sts.provider.STSException;
+import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
+import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
+import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
+import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
+import org.apache.cxf.ws.security.sts.provider.operation.CancelOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.IssueSingleOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.RenewOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.RequestCollectionOperation;
+import org.apache.cxf.ws.security.sts.provider.operation.ValidateOperation;
+
+/**
+ * An implementation of the RequestCollectionOperation interface. It is composed of the different
+ * Operation implementations
+ */
+public class TokenRequestCollectionOperation extends AbstractOperation
+ implements RequestCollectionOperation {
+
+ public static final String WSTRUST_REQUESTTYPE_BATCH_ISSUE = STSConstants.WST_NS_05_12
+ + "/BatchIssue";
+ public static final String WSTRUST_REQUESTTYPE_BATCH_CANCEL = STSConstants.WST_NS_05_12
+ + "/BatchCancel";
+ public static final String WSTRUST_REQUESTTYPE_BATCH_RENEW = STSConstants.WST_NS_05_12
+ + "/BatchRenew";
+ public static final String WSTRUST_REQUESTTYPE_BATCH_VALIDATE = STSConstants.WST_NS_05_12
+ + "/BatchValidate";
+
+ static final Logger LOG = LogUtils.getL7dLogger(TokenRequestCollectionOperation.class);
+
+ private IssueSingleOperation issueSingleOperation;
+ private ValidateOperation validateOperation;
+ private RenewOperation renewOperation;
+ private CancelOperation cancelOperation;
+
+ public RequestSecurityTokenResponseCollectionType requestCollection(
+ RequestSecurityTokenCollectionType requestCollection,
+ WebServiceContext context) {
+ RequestSecurityTokenResponseCollectionType responseCollection =
+ QNameConstants.WS_TRUST_FACTORY.createRequestSecurityTokenResponseCollectionType();
+
+ String requestType = null;
+ for (RequestSecurityTokenType request : requestCollection.getRequestSecurityToken()) {
+ List<?> objectList = request.getAny();
+ for (Object o : objectList) {
+ if (o instanceof JAXBElement) {
+ QName qname = ((JAXBElement<?>) o).getName();
+ if (qname.equals(new QName(STSConstants.WST_NS_05_12, "RequestType"))) {
+ String val = ((JAXBElement<?>) o).getValue().toString();
+ // All batch requests must have the same RequestType
+ if (val == null || (requestType != null && !requestType.equals(val))) {
+ LOG.log(
+ Level.WARNING,
+ "All RequestSecurityTokenCollection elements do not share the same"
+ + "RequestType"
+ );
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ } else {
+ requestType = val;
+ }
+ }
+ }
+ }
+
+ RequestSecurityTokenResponseType response = handleRequest(request, context, requestType);
+ responseCollection.getRequestSecurityTokenResponse().add(response);
+ }
+ return responseCollection;
+ }
+
+ public RequestSecurityTokenResponseType handleRequest(
+ RequestSecurityTokenType request,
+ WebServiceContext context,
+ String requestType
+ ) {
+ if (WSTRUST_REQUESTTYPE_BATCH_ISSUE.equals(requestType)) {
+ if (issueSingleOperation == null) {
+ LOG.log(Level.WARNING, "IssueSingleOperation is null");
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ }
+ return issueSingleOperation.issueSingle(request, context);
+ } else if (WSTRUST_REQUESTTYPE_BATCH_VALIDATE.equals(requestType)) {
+ if (validateOperation == null) {
+ LOG.log(Level.WARNING, "ValidateOperation is null");
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ }
+ return validateOperation.validate(request, context);
+ } else if (WSTRUST_REQUESTTYPE_BATCH_CANCEL.equals(requestType)) {
+ if (cancelOperation == null) {
+ LOG.log(Level.WARNING, "CancelOperation is null");
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ }
+ return cancelOperation.cancel(request, context);
+ } else if (WSTRUST_REQUESTTYPE_BATCH_RENEW.equals(requestType)) {
+ if (renewOperation == null) {
+ LOG.log(Level.WARNING, "RenewOperation is null");
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ }
+ return renewOperation.renew(request, context);
+ } else {
+ LOG.log(Level.WARNING, "Unknown operation requested");
+ throw new STSException(
+ "Error in requesting a token", STSException.REQUEST_FAILED
+ );
+ }
+ }
+
+ public IssueSingleOperation getIssueSingleOperation() {
+ return issueSingleOperation;
+ }
+
+ public void setIssueSingleOperation(IssueSingleOperation issueSingleOperation) {
+ this.issueSingleOperation = issueSingleOperation;
+ }
+
+ public ValidateOperation getValidateOperation() {
+ return validateOperation;
+ }
+
+ public void setValidateOperation(ValidateOperation validateOperation) {
+ this.validateOperation = validateOperation;
+ }
+
+ public RenewOperation getRenewOperation() {
+ return renewOperation;
+ }
+
+ public void setRenewOperation(RenewOperation renewOperation) {
+ this.renewOperation = renewOperation;
+ }
+
+ public CancelOperation getCancelOperation() {
+ return cancelOperation;
+ }
+
+ public void setCancelOperation(CancelOperation cancelOperation) {
+ this.cancelOperation = cancelOperation;
+ }
+
+}
Modified: cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java (original)
+++ cxf/trunk/services/sts/sts-core/src/main/java/org/apache/cxf/sts/operation/TokenValidateOperation.java Thu Apr 12 16:18:00 2012
@@ -42,8 +42,6 @@ import org.apache.cxf.sts.token.provider
import org.apache.cxf.sts.token.validator.TokenValidatorResponse;
import org.apache.cxf.ws.security.sts.provider.STSException;
import org.apache.cxf.ws.security.sts.provider.model.LifetimeType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseType;
import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
import org.apache.cxf.ws.security.sts.provider.model.RequestedReferenceType;
@@ -58,20 +56,7 @@ import org.apache.ws.security.WSSecurity
public class TokenValidateOperation extends AbstractOperation implements ValidateOperation {
private static final Logger LOG = LogUtils.getL7dLogger(TokenValidateOperation.class);
-
- public RequestSecurityTokenResponseCollectionType validate(
- RequestSecurityTokenCollectionType requestCollection, WebServiceContext context
- ) {
- RequestSecurityTokenResponseCollectionType responseCollection =
- QNameConstants.WS_TRUST_FACTORY.createRequestSecurityTokenResponseCollectionType();
- for (RequestSecurityTokenType request : requestCollection.getRequestSecurityToken()) {
- RequestSecurityTokenResponseType response = validate(request, context);
- responseCollection.getRequestSecurityTokenResponse().add(response);
- }
- return responseCollection;
- }
-
public RequestSecurityTokenResponseType validate(
RequestSecurityTokenType request,
WebServiceContext context
Modified: cxf/trunk/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/ValidateUnitTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/ValidateUnitTest.java?rev=1325349&r1=1325348&r2=1325349&view=diff
==============================================================================
--- cxf/trunk/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/ValidateUnitTest.java (original)
+++ cxf/trunk/services/sts/sts-core/src/test/java/org/apache/cxf/sts/operation/ValidateUnitTest.java Thu Apr 12 16:18:00 2012
@@ -99,7 +99,10 @@ public class ValidateUnitTest extends or
*/
@org.junit.Test
public void testValidateMultipleTokens() throws Exception {
+ TokenRequestCollectionOperation requestCollectionOperation =
+ new TokenRequestCollectionOperation();
TokenValidateOperation validateOperation = new TokenValidateOperation();
+ requestCollectionOperation.setValidateOperation(validateOperation);
// Add Token Validator
List<TokenValidator> validatorList = new ArrayList<TokenValidator>();
@@ -119,6 +122,14 @@ public class ValidateUnitTest extends or
QNameConstants.TOKEN_TYPE, String.class, STSConstants.STATUS
);
request.getAny().add(tokenType);
+
+ JAXBElement<String> requestType =
+ new JAXBElement<String>(
+ QNameConstants.REQUEST_TYPE, String.class,
+ TokenRequestCollectionOperation.WSTRUST_REQUESTTYPE_BATCH_VALIDATE
+ );
+ request.getAny().add(requestType);
+
ValidateTargetType validateTarget = new ValidateTargetType();
JAXBElement<BinarySecurityTokenType> token = createToken();
validateTarget.setAny(token);
@@ -131,6 +142,7 @@ public class ValidateUnitTest extends or
request = new RequestSecurityTokenType();
request.getAny().add(tokenType);
+ request.getAny().add(requestType);
validateTarget.setAny(token);
request.getAny().add(validateTargetType);
requestCollection.getRequestSecurityToken().add(request);
@@ -142,7 +154,7 @@ public class ValidateUnitTest extends or
// Validate a token
RequestSecurityTokenResponseCollectionType response =
- validateOperation.validate(requestCollection, webServiceContext);
+ requestCollectionOperation.requestCollection(requestCollection, webServiceContext);
List<RequestSecurityTokenResponseType> securityTokenResponse =
response.getRequestSecurityTokenResponse();
assertEquals(securityTokenResponse.size(), 2);
Added: cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/BatchRequest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/BatchRequest.java?rev=1325349&view=auto
==============================================================================
--- cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/BatchRequest.java (added)
+++ cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/BatchRequest.java Thu Apr 12 16:18:00 2012
@@ -0,0 +1,63 @@
+/**
+ * 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.cxf.systest.sts.batch;
+
+import java.util.List;
+
+public class BatchRequest {
+
+ List<String> tokenTypes;
+ List<String> keyTypes;
+ String requestType;
+ String action;
+ List<String> appliesTo;
+
+ public List<String> getTokenTypes() {
+ return tokenTypes;
+ }
+ public void setTokenTypes(List<String> tokenTypes) {
+ this.tokenTypes = tokenTypes;
+ }
+ public List<String> getKeyTypes() {
+ return keyTypes;
+ }
+ public void setKeyTypes(List<String> keyTypes) {
+ this.keyTypes = keyTypes;
+ }
+ public String getRequestType() {
+ return requestType;
+ }
+ public void setRequestType(String requestType) {
+ this.requestType = requestType;
+ }
+ public String getAction() {
+ return action;
+ }
+ public void setAction(String action) {
+ this.action = action;
+ }
+ public List<String> getAppliesTo() {
+ return appliesTo;
+ }
+ public void setAppliesTo(List<String> appliesTo) {
+ this.appliesTo = appliesTo;
+ }
+
+
+}
Added: cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SAMLBatchUnitTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SAMLBatchUnitTest.java?rev=1325349&view=auto
==============================================================================
--- cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SAMLBatchUnitTest.java (added)
+++ cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/SAMLBatchUnitTest.java Thu Apr 12 16:18:00 2012
@@ -0,0 +1,127 @@
+/**
+ * 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.cxf.systest.sts.batch;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.systest.sts.common.SecurityTestUtil;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.ws.security.SecurityConstants;
+import org.apache.cxf.ws.security.tokenstore.SecurityToken;
+import org.junit.BeforeClass;
+import org.opensaml.common.xml.SAMLConstants;
+
+/**
+ * In this test case, a CXF client requests a number of SAML Tokens from an STS using batch processing.
+ * It uses a simple STSClient implementation to request both a SAML 1.1 and 2.0 token at the same time.
+ */
+public class SAMLBatchUnitTest extends AbstractBusClientServerTestBase {
+
+ static final String STSPORT = allocatePort(STSServer.class);
+
+ @BeforeClass
+ public static void startServers() throws Exception {
+ assertTrue(
+ "Server failed to launch",
+ // run the server in the same process
+ // set this to false to fork
+ launchServer(STSServer.class, true)
+ );
+ }
+
+ @org.junit.AfterClass
+ public static void cleanup() {
+ SecurityTestUtil.cleanup();
+ }
+
+ @org.junit.Test
+ public void testBatchIssueSAMLTokens() throws Exception {
+ SpringBusFactory bf = new SpringBusFactory();
+ URL busFile = SAMLBatchUnitTest.class.getResource("cxf-client-unit.xml");
+
+ Bus bus = bf.createBus(busFile.toString());
+ SpringBusFactory.setDefaultBus(bus);
+ SpringBusFactory.setThreadDefaultBus(bus);
+
+ String wsdlLocation =
+ "https://localhost:" + STSPORT + "/SecurityTokenService/Transport?wsdl";
+
+ BatchRequest request = new BatchRequest();
+ List<String> appliesTo = new ArrayList<String>();
+ appliesTo.add("https://localhost:8081/doubleit/services/doubleittransportsaml1");
+ appliesTo.add("https://localhost:8081/doubleit/services/doubleittransportsaml2");
+ request.setAppliesTo(appliesTo);
+
+ request.setAction("http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchIssue");
+ request.setRequestType("http://docs.oasis-open.org/ws-sx/ws-trust/200512/BatchIssue");
+
+ List<String> tokenTypes = new ArrayList<String>();
+ tokenTypes.add("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1");
+ tokenTypes.add("http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0");
+ request.setTokenTypes(tokenTypes);
+ List<String> keyTypes = new ArrayList<String>();
+ keyTypes.add("http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer");
+ keyTypes.add("http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer");
+ request.setKeyTypes(keyTypes);
+
+ // Request the token
+ List<SecurityToken> tokens = requestSecurityToken(bus, wsdlLocation, request);
+ assertTrue(tokens != null && tokens.size() == 2);
+
+ assertTrue(tokens.get(0).getToken().getLocalName().equals("Assertion"));
+ assertTrue(tokens.get(0).getToken().getNamespaceURI().equals(SAMLConstants.SAML1_NS));
+ assertTrue(tokens.get(1).getToken().getLocalName().equals("Assertion"));
+ assertTrue(tokens.get(1).getToken().getNamespaceURI().equals(SAMLConstants.SAML20_NS));
+ }
+
+
+ private List<SecurityToken> requestSecurityToken(
+ Bus bus, String wsdlLocation, BatchRequest request
+ ) throws Exception {
+ SimpleBatchSTSClient stsClient = new SimpleBatchSTSClient(bus);
+ stsClient.setWsdlLocation(wsdlLocation);
+ stsClient.setServiceName("{http://docs.oasis-open.org/ws-sx/ws-trust/200512/}SecurityTokenService");
+ stsClient.setEndpointName("{http://docs.oasis-open.org/ws-sx/ws-trust/200512/}Transport_Port");
+
+ Map<String, Object> properties = new HashMap<String, Object>();
+ properties.put(SecurityConstants.USERNAME, "alice");
+ properties.put(
+ SecurityConstants.CALLBACK_HANDLER,
+ "org.apache.cxf.systest.sts.common.CommonCallbackHandler"
+ );
+ properties.put(SecurityConstants.STS_TOKEN_PROPERTIES, "serviceKeystore.properties");
+
+ stsClient.setEnableLifetime(true);
+
+ stsClient.setProperties(properties);
+ stsClient.setRequiresEntropy(true);
+ stsClient.setKeySize(128);
+ stsClient.setAddressingNamespace("http://www.w3.org/2005/08/addressing");
+
+ return stsClient.requestBatchSecurityTokens(request);
+ }
+
+
+}
Copied: cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/STSServer.java (from r1325343, cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/STSServer.java?p2=cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/STSServer.java&p1=cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java&r1=1325343&r2=1325349&rev=1325349&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/sts/provider/operation/IssueOperation.java (original)
+++ cxf/trunk/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/batch/STSServer.java Thu Apr 12 16:18:00 2012
@@ -16,23 +16,35 @@
* specific language governing permissions and limitations
* under the License.
*/
+package org.apache.cxf.systest.sts.batch;
-package org.apache.cxf.ws.security.sts.provider.operation;
+import java.net.URL;
-import javax.xml.ws.WebServiceContext;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.bus.spring.SpringBusFactory;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenResponseCollectionType;
-import org.apache.cxf.ws.security.sts.provider.model.RequestSecurityTokenType;
+public class STSServer extends AbstractBusTestServerBase {
-public interface IssueOperation {
+ public STSServer() {
- RequestSecurityTokenResponseCollectionType issue(
- RequestSecurityTokenType request,
- WebServiceContext context);
-
- RequestSecurityTokenResponseCollectionType issue(
- RequestSecurityTokenCollectionType requestCollection,
- WebServiceContext context);
+ }
+
+ protected void run() {
+ URL busFile = STSServer.class.getResource("cxf-sts.xml");
+ Bus busLocal = new SpringBusFactory().createBus(busFile);
+ BusFactory.setDefaultBus(busLocal);
+ setBus(busLocal);
+ try {
+ new STSServer();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void main(String args[]) {
+ new STSServer().run();
+ }
}