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 2015/06/03 16:20:37 UTC
[1/2] cxf git commit: Refactor DefaultSubjectProvider to make it
easier to subclass bits of functionality
Repository: cxf
Updated Branches:
refs/heads/master 0ed74ffb1 -> f97ef8372
Refactor DefaultSubjectProvider to make it easier to subclass bits of functionality
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3348a299
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3348a299
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3348a299
Branch: refs/heads/master
Commit: 3348a2999d2693edfeaf1fdd62a94222774186fd
Parents: 0ed74ff
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Jun 3 14:56:55 2015 +0100
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Jun 3 14:56:55 2015 +0100
----------------------------------------------------------------------
.../token/provider/DefaultSubjectProvider.java | 127 ++++++++++++-------
1 file changed, 83 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/3348a299/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
index f845a86..4aa6253 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
@@ -87,30 +87,47 @@ public class DefaultSubjectProvider implements SubjectProvider {
public SubjectBean getSubject(
TokenProviderParameters providerParameters, Document doc, byte[] secret
) {
- TokenRequirements tokenRequirements = providerParameters.getTokenRequirements();
- KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
- STSPropertiesMBean stsProperties = providerParameters.getStsProperties();
-
- String tokenType = tokenRequirements.getTokenType();
- String keyType = keyRequirements.getKeyType();
- String confirmationMethod = getSubjectConfirmationMethod(tokenType, keyType);
+ // 1. Get the principal
+ Principal principal = getPrincipal(providerParameters);
+ if (principal == null) {
+ LOG.fine("Error in getting principal");
+ throw new STSException("Error in getting principal", STSException.REQUEST_FAILED);
+ }
+
+ // 2. Create the SubjectBean using the principal
+ SubjectBean subjectBean = createSubjectBean(principal, providerParameters);
+ // 3. Create the KeyInfoBean and set it on the SubjectBean
+ KeyInfoBean keyInfo = createKeyInfo(providerParameters, doc, secret);
+ subjectBean.setKeyInfo(keyInfo);
+
+ return subjectBean;
+ }
+
+ /**
+ * Get the Principal (which is used as the Subject). By default, we check the following (in order):
+ * - A valid OnBehalfOf principal
+ * - A valid ActAs principal
+ * - A valid principal associated with a token received as ValidateTarget
+ * - The principal associated with the request. We don't need to check to see if it is "valid" here, as it
+ * is not parsed by the STS (but rather the WS-Security layer).
+ */
+ protected Principal getPrincipal(TokenProviderParameters providerParameters) {
Principal principal = null;
- ReceivedToken receivedToken = null;
//TokenValidator in IssueOperation has validated the ReceivedToken
//if validation was successful, the principal was set in ReceivedToken
if (providerParameters.getTokenRequirements().getOnBehalfOf() != null) {
- receivedToken = providerParameters.getTokenRequirements().getOnBehalfOf();
+ ReceivedToken receivedToken = providerParameters.getTokenRequirements().getOnBehalfOf();
if (receivedToken.getState().equals(STATE.VALID)) {
principal = receivedToken.getPrincipal();
}
} else if (providerParameters.getTokenRequirements().getActAs() != null) {
- receivedToken = providerParameters.getTokenRequirements().getActAs();
+ ReceivedToken receivedToken = providerParameters.getTokenRequirements().getActAs();
if (receivedToken.getState().equals(STATE.VALID)) {
principal = receivedToken.getPrincipal();
}
} else if (providerParameters.getTokenRequirements().getValidateTarget() != null) {
- receivedToken = providerParameters.getTokenRequirements().getValidateTarget();
+ ReceivedToken receivedToken = providerParameters.getTokenRequirements().getValidateTarget();
if (receivedToken.getState().equals(STATE.VALID)) {
principal = receivedToken.getPrincipal();
}
@@ -118,10 +135,19 @@ public class DefaultSubjectProvider implements SubjectProvider {
principal = providerParameters.getPrincipal();
}
- if (principal == null) {
- LOG.fine("Error in getting principal");
- throw new STSException("Error in getting principal", STSException.REQUEST_FAILED);
- }
+ return principal;
+ }
+
+ /**
+ * Create the SubjectBean using the specified principal.
+ */
+ protected SubjectBean createSubjectBean(Principal principal, TokenProviderParameters providerParameters) {
+ TokenRequirements tokenRequirements = providerParameters.getTokenRequirements();
+ KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
+
+ String tokenType = tokenRequirements.getTokenType();
+ String keyType = keyRequirements.getKeyType();
+ String confirmationMethod = getSubjectConfirmationMethod(tokenType, keyType);
String subjectName = principal.getName();
if (SAML2Constants.NAMEID_FORMAT_UNSPECIFIED.equals(subjectNameIDFormat)
@@ -145,6 +171,42 @@ public class DefaultSubjectProvider implements SubjectProvider {
subjectBean.setSubjectNameIDFormat(subjectNameIDFormat);
}
+ return subjectBean;
+ }
+
+ /**
+ * Get the SubjectConfirmation method given a tokenType and keyType
+ */
+ protected String getSubjectConfirmationMethod(String tokenType, String keyType) {
+ if (WSConstants.WSS_SAML_TOKEN_TYPE.equals(tokenType)
+ || WSConstants.SAML_NS.equals(tokenType)) {
+ if (STSConstants.SYMMETRIC_KEY_KEYTYPE.equals(keyType)
+ || STSConstants.PUBLIC_KEY_KEYTYPE.equals(keyType)) {
+ return SAML1Constants.CONF_HOLDER_KEY;
+ } else {
+ return SAML1Constants.CONF_BEARER;
+ }
+ } else {
+ if (STSConstants.SYMMETRIC_KEY_KEYTYPE.equals(keyType)
+ || STSConstants.PUBLIC_KEY_KEYTYPE.equals(keyType)) {
+ return SAML2Constants.CONF_HOLDER_KEY;
+ } else {
+ return SAML2Constants.CONF_BEARER;
+ }
+ }
+ }
+
+ /**
+ * Create and return the KeyInfoBean to be inserted into the SubjectBean
+ */
+ protected KeyInfoBean createKeyInfo(
+ TokenProviderParameters providerParameters, Document doc, byte[] secret
+ ) {
+ KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
+ STSPropertiesMBean stsProperties = providerParameters.getStsProperties();
+
+ String keyType = keyRequirements.getKeyType();
+
if (STSConstants.SYMMETRIC_KEY_KEYTYPE.equals(keyType)) {
Crypto crypto = stsProperties.getEncryptionCrypto();
@@ -180,8 +242,8 @@ public class DefaultSubjectProvider implements SubjectProvider {
throw new STSException("Encryption certificate is not found for alias: " + encryptionName);
}
KeyInfoBean keyInfo =
- createKeyInfo(certs[0], secret, doc, encryptionProperties, crypto);
- subjectBean.setKeyInfo(keyInfo);
+ createEncryptedKeyKeyInfo(certs[0], secret, doc, encryptionProperties, crypto);
+ return keyInfo;
} catch (WSSecurityException ex) {
LOG.log(Level.WARNING, "", ex);
throw new STSException(ex.getMessage(), ex);
@@ -211,39 +273,16 @@ public class DefaultSubjectProvider implements SubjectProvider {
}
}
- KeyInfoBean keyInfo = createKeyInfo(receivedKey.getX509Cert(), receivedKey.getPublicKey());
- subjectBean.setKeyInfo(keyInfo);
+ return createPublicKeyKeyInfo(receivedKey.getX509Cert(), receivedKey.getPublicKey());
}
- return subjectBean;
- }
-
- /**
- * Get the SubjectConfirmation method given a tokenType and keyType
- */
- protected String getSubjectConfirmationMethod(String tokenType, String keyType) {
- if (WSConstants.WSS_SAML_TOKEN_TYPE.equals(tokenType)
- || WSConstants.SAML_NS.equals(tokenType)) {
- if (STSConstants.SYMMETRIC_KEY_KEYTYPE.equals(keyType)
- || STSConstants.PUBLIC_KEY_KEYTYPE.equals(keyType)) {
- return SAML1Constants.CONF_HOLDER_KEY;
- } else {
- return SAML1Constants.CONF_BEARER;
- }
- } else {
- if (STSConstants.SYMMETRIC_KEY_KEYTYPE.equals(keyType)
- || STSConstants.PUBLIC_KEY_KEYTYPE.equals(keyType)) {
- return SAML2Constants.CONF_HOLDER_KEY;
- } else {
- return SAML2Constants.CONF_BEARER;
- }
- }
+ return null;
}
/**
* Create a KeyInfoBean that contains an X.509 certificate or Public Key
*/
- protected static KeyInfoBean createKeyInfo(X509Certificate certificate, PublicKey publicKey) {
+ protected static KeyInfoBean createPublicKeyKeyInfo(X509Certificate certificate, PublicKey publicKey) {
KeyInfoBean keyInfo = new KeyInfoBean();
if (certificate != null) {
@@ -260,7 +299,7 @@ public class DefaultSubjectProvider implements SubjectProvider {
/**
* Create an EncryptedKey KeyInfo.
*/
- protected static KeyInfoBean createKeyInfo(
+ protected static KeyInfoBean createEncryptedKeyKeyInfo(
X509Certificate certificate,
byte[] secret,
Document doc,
[2/2] cxf git commit: Add a new SubjectProviderParameters interface
to make it easier to pass more parameters through to the SubjectProviders
Posted by co...@apache.org.
Add a new SubjectProviderParameters interface to make it easier to pass more parameters through to the SubjectProviders
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/f97ef837
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/f97ef837
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/f97ef837
Branch: refs/heads/master
Commit: f97ef83725ba3f54083efe99a7dd97bab6e44dec
Parents: 3348a29
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Wed Jun 3 15:19:59 2015 +0100
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Wed Jun 3 15:19:59 2015 +0100
----------------------------------------------------------------------
.../token/provider/DefaultSubjectProvider.java | 27 +++---
.../sts/token/provider/SAMLTokenProvider.java | 10 ++-
.../cxf/sts/token/provider/SubjectProvider.java | 3 +-
.../provider/SubjectProviderParameters.java | 88 ++++++++++++++++++++
.../token/provider/CustomSubjectProvider.java | 5 +-
.../sts/secure_conv/SCTSAMLTokenProvider.java | 11 ++-
6 files changed, 124 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
index 4aa6253..2d5540f 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/DefaultSubjectProvider.java
@@ -84,21 +84,20 @@ public class DefaultSubjectProvider implements SubjectProvider {
/**
* Get a SubjectBean object.
*/
- public SubjectBean getSubject(
- TokenProviderParameters providerParameters, Document doc, byte[] secret
- ) {
+ public SubjectBean getSubject(SubjectProviderParameters subjectProviderParameters) {
+
// 1. Get the principal
- Principal principal = getPrincipal(providerParameters);
+ Principal principal = getPrincipal(subjectProviderParameters);
if (principal == null) {
LOG.fine("Error in getting principal");
throw new STSException("Error in getting principal", STSException.REQUEST_FAILED);
}
// 2. Create the SubjectBean using the principal
- SubjectBean subjectBean = createSubjectBean(principal, providerParameters);
+ SubjectBean subjectBean = createSubjectBean(principal, subjectProviderParameters);
// 3. Create the KeyInfoBean and set it on the SubjectBean
- KeyInfoBean keyInfo = createKeyInfo(providerParameters, doc, secret);
+ KeyInfoBean keyInfo = createKeyInfo(subjectProviderParameters);
subjectBean.setKeyInfo(keyInfo);
return subjectBean;
@@ -112,7 +111,9 @@ public class DefaultSubjectProvider implements SubjectProvider {
* - The principal associated with the request. We don't need to check to see if it is "valid" here, as it
* is not parsed by the STS (but rather the WS-Security layer).
*/
- protected Principal getPrincipal(TokenProviderParameters providerParameters) {
+ protected Principal getPrincipal(SubjectProviderParameters subjectProviderParameters) {
+ TokenProviderParameters providerParameters = subjectProviderParameters.getProviderParameters();
+
Principal principal = null;
//TokenValidator in IssueOperation has validated the ReceivedToken
//if validation was successful, the principal was set in ReceivedToken
@@ -141,7 +142,10 @@ public class DefaultSubjectProvider implements SubjectProvider {
/**
* Create the SubjectBean using the specified principal.
*/
- protected SubjectBean createSubjectBean(Principal principal, TokenProviderParameters providerParameters) {
+ protected SubjectBean createSubjectBean(
+ Principal principal, SubjectProviderParameters subjectProviderParameters
+ ) {
+ TokenProviderParameters providerParameters = subjectProviderParameters.getProviderParameters();
TokenRequirements tokenRequirements = providerParameters.getTokenRequirements();
KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
@@ -199,9 +203,8 @@ public class DefaultSubjectProvider implements SubjectProvider {
/**
* Create and return the KeyInfoBean to be inserted into the SubjectBean
*/
- protected KeyInfoBean createKeyInfo(
- TokenProviderParameters providerParameters, Document doc, byte[] secret
- ) {
+ protected KeyInfoBean createKeyInfo(SubjectProviderParameters subjectProviderParameters) {
+ TokenProviderParameters providerParameters = subjectProviderParameters.getProviderParameters();
KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
STSPropertiesMBean stsProperties = providerParameters.getStsProperties();
@@ -241,6 +244,8 @@ public class DefaultSubjectProvider implements SubjectProvider {
if ((certs == null) || (certs.length == 0)) {
throw new STSException("Encryption certificate is not found for alias: " + encryptionName);
}
+ Document doc = subjectProviderParameters.getDoc();
+ byte[] secret = subjectProviderParameters.getSecret();
KeyInfoBean keyInfo =
createEncryptedKeyKeyInfo(certs[0], secret, doc, encryptionProperties, crypto);
return keyInfo;
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
index 388f3a7..feac5bd 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
@@ -383,7 +383,15 @@ public class SAMLTokenProvider extends AbstractSAMLTokenProvider implements Toke
}
// Get the Subject and Conditions
- SubjectBean subjectBean = subjectProvider.getSubject(tokenParameters, doc, secret);
+ SubjectProviderParameters subjectProviderParameters = new SubjectProviderParameters();
+ subjectProviderParameters.setProviderParameters(tokenParameters);
+ subjectProviderParameters.setDoc(doc);
+ subjectProviderParameters.setSecret(secret);
+ subjectProviderParameters.setAttrBeanList(attrBeanList);
+ subjectProviderParameters.setAuthBeanList(authBeanList);
+ subjectProviderParameters.setAuthDecisionBeanList(authDecisionBeanList);
+ SubjectBean subjectBean = subjectProvider.getSubject(subjectProviderParameters);
+
ConditionsBean conditionsBean = conditionsProvider.getConditions(tokenParameters);
// Set all of the beans on the SamlCallbackHandler
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProvider.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProvider.java
index 70801ef..9715119 100644
--- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProvider.java
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProvider.java
@@ -18,7 +18,6 @@
*/
package org.apache.cxf.sts.token.provider;
-import org.w3c.dom.Document;
import org.apache.wss4j.common.saml.bean.SubjectBean;
/**
@@ -30,6 +29,6 @@ public interface SubjectProvider {
/**
* Get a SubjectBean object.
*/
- SubjectBean getSubject(TokenProviderParameters providerParameters, Document doc, byte[] secret);
+ SubjectBean getSubject(SubjectProviderParameters subjectProviderParameters);
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProviderParameters.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProviderParameters.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProviderParameters.java
new file mode 100644
index 0000000..d0476a0
--- /dev/null
+++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SubjectProviderParameters.java
@@ -0,0 +1,88 @@
+/**
+ * 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.token.provider;
+
+import java.util.List;
+import org.w3c.dom.Document;
+
+import org.apache.wss4j.common.saml.bean.AttributeStatementBean;
+import org.apache.wss4j.common.saml.bean.AuthDecisionStatementBean;
+import org.apache.wss4j.common.saml.bean.AuthenticationStatementBean;
+
+/**
+ * The parameters that are passed through to a SubjectProvider implementation to create a Subject(Bean).
+ */
+public class SubjectProviderParameters {
+
+ private TokenProviderParameters providerParameters;
+ private Document doc;
+ private byte[] secret;
+ private List<AttributeStatementBean> attrBeanList;
+ private List<AuthenticationStatementBean> authBeanList;
+ private List<AuthDecisionStatementBean> authDecisionBeanList;
+
+ public TokenProviderParameters getProviderParameters() {
+ return providerParameters;
+ }
+
+ public void setProviderParameters(TokenProviderParameters providerParameters) {
+ this.providerParameters = providerParameters;
+ }
+
+ public Document getDoc() {
+ return doc;
+ }
+
+ public void setDoc(Document doc) {
+ this.doc = doc;
+ }
+
+ public byte[] getSecret() {
+ return secret;
+ }
+
+ public void setSecret(byte[] secret) {
+ this.secret = secret;
+ }
+
+ public List<AttributeStatementBean> getAttrBeanList() {
+ return attrBeanList;
+ }
+
+ public void setAttrBeanList(List<AttributeStatementBean> attrBeanList) {
+ this.attrBeanList = attrBeanList;
+ }
+
+ public List<AuthenticationStatementBean> getAuthBeanList() {
+ return authBeanList;
+ }
+
+ public void setAuthBeanList(List<AuthenticationStatementBean> authBeanList) {
+ this.authBeanList = authBeanList;
+ }
+
+ public List<AuthDecisionStatementBean> getAuthDecisionBeanList() {
+ return authDecisionBeanList;
+ }
+
+ public void setAuthDecisionBeanList(List<AuthDecisionStatementBean> authDecisionBeanList) {
+ this.authDecisionBeanList = authDecisionBeanList;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/provider/CustomSubjectProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/provider/CustomSubjectProvider.java b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/provider/CustomSubjectProvider.java
index ddbd844..bbd770c 100644
--- a/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/provider/CustomSubjectProvider.java
+++ b/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/provider/CustomSubjectProvider.java
@@ -20,8 +20,6 @@ package org.apache.cxf.sts.token.provider;
import java.security.Principal;
-import org.w3c.dom.Document;
-
import org.apache.cxf.sts.STSConstants;
import org.apache.cxf.sts.request.KeyRequirements;
import org.apache.cxf.sts.request.TokenRequirements;
@@ -40,7 +38,8 @@ public class CustomSubjectProvider implements SubjectProvider {
/**
* Get a SubjectBean object.
*/
- public SubjectBean getSubject(TokenProviderParameters providerParameters, Document doc, byte[] secret) {
+ public SubjectBean getSubject(SubjectProviderParameters subjectProviderParameters) {
+ TokenProviderParameters providerParameters = subjectProviderParameters.getProviderParameters();
TokenRequirements tokenRequirements = providerParameters.getTokenRequirements();
KeyRequirements keyRequirements = providerParameters.getKeyRequirements();
http://git-wip-us.apache.org/repos/asf/cxf/blob/f97ef837/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/secure_conv/SCTSAMLTokenProvider.java
----------------------------------------------------------------------
diff --git a/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/secure_conv/SCTSAMLTokenProvider.java b/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/secure_conv/SCTSAMLTokenProvider.java
index 81f257e..b1e4abb 100644
--- a/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/secure_conv/SCTSAMLTokenProvider.java
+++ b/services/sts/systests/advanced/src/test/java/org/apache/cxf/systest/sts/secure_conv/SCTSAMLTokenProvider.java
@@ -26,7 +26,6 @@ import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.sts.STSConstants;
@@ -40,6 +39,7 @@ import org.apache.cxf.sts.token.provider.DefaultConditionsProvider;
import org.apache.cxf.sts.token.provider.DefaultSubjectProvider;
import org.apache.cxf.sts.token.provider.SamlCallbackHandler;
import org.apache.cxf.sts.token.provider.SubjectProvider;
+import org.apache.cxf.sts.token.provider.SubjectProviderParameters;
import org.apache.cxf.sts.token.provider.TokenProvider;
import org.apache.cxf.sts.token.provider.TokenProviderParameters;
import org.apache.cxf.sts.token.provider.TokenProviderResponse;
@@ -53,7 +53,6 @@ import org.apache.wss4j.common.saml.bean.AttributeStatementBean;
import org.apache.wss4j.common.saml.bean.ConditionsBean;
import org.apache.wss4j.common.saml.bean.SubjectBean;
import org.apache.wss4j.dom.WSConstants;
-
import org.joda.time.DateTime;
import org.opensaml.saml.common.SAMLVersion;
@@ -250,7 +249,13 @@ public class SCTSAMLTokenProvider implements TokenProvider {
}
// Get the Subject and Conditions
- SubjectBean subjectBean = subjectProvider.getSubject(tokenParameters, doc, secret);
+ SubjectProviderParameters subjectProviderParameters = new SubjectProviderParameters();
+ subjectProviderParameters.setProviderParameters(tokenParameters);
+ subjectProviderParameters.setDoc(doc);
+ subjectProviderParameters.setSecret(secret);
+ subjectProviderParameters.setAttrBeanList(attrBeanList);
+ SubjectBean subjectBean = subjectProvider.getSubject(subjectProviderParameters);
+
ConditionsBean conditionsBean = conditionsProvider.getConditions(tokenParameters);
// Set all of the beans on the SamlCallbackHandler