Author: coheigea
Date: Fri Sep 7 18:46:42 2012
New Revision: 1382122
URL: http://svn.apache.org/viewvc?rev=1382122&view=rev
Log:
Merged revisions 1382112 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/branches/2.6.x-fixes
........
r1382112 | coheigea | 2012-09-07 19:22:48 +0100 (Fri, 07 Sep 2012) | 2 lines
[CXF-4484] - Claims to SAML attribute encoding wrong
........
Added:
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java
- copied, changed from r1381428,
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
Modified:
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
Modified:
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java?rev=1382122&r1=1382121&r2=1382122&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
(original)
+++
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
Fri Sep 7 18:46:42 2012
@@ -31,6 +31,7 @@ import org.apache.ws.security.WSConstant
import org.apache.ws.security.saml.ext.bean.AttributeBean;
import org.apache.ws.security.saml.ext.bean.AttributeStatementBean;
+@Deprecated
public class ClaimsAttributeStatementProvider implements
AttributeStatementProvider {
public AttributeStatementBean getStatement(TokenProviderParameters
providerParameters) {
Copied:
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java
(from r1381428,
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java)
URL:
http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java?p2=cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java&p1=cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java&r1=1381428&r2=1382122&rev=1382122&view=diff
==============================================================================
---
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
(original)
+++
cxf/branches/2.5.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java
Fri Sep 7 18:46:42 2012
@@ -30,8 +30,11 @@ import org.apache.cxf.sts.token.provider
import org.apache.ws.security.WSConstants;
import org.apache.ws.security.saml.ext.bean.AttributeBean;
import org.apache.ws.security.saml.ext.bean.AttributeStatementBean;
+import org.apache.ws.security.saml.ext.builder.SAML2Constants;
-public class ClaimsAttributeStatementProvider implements
AttributeStatementProvider {
+public class CorrectedClaimsAttributeStatementProvider implements
AttributeStatementProvider {
+
+ private String nameFormat = SAML2Constants.ATTRNAME_FORMAT_UNSPECIFIED;
public AttributeStatementBean getStatement(TokenProviderParameters
providerParameters) {
// Handle Claims
@@ -43,7 +46,13 @@ public class ClaimsAttributeStatementPro
params.setAppliesToAddress(providerParameters.getAppliesToAddress());
params.setEncryptionProperties(providerParameters.getEncryptionProperties());
params.setKeyRequirements(providerParameters.getKeyRequirements());
- params.setPrincipal(providerParameters.getPrincipal());
+ if (providerParameters.getTokenRequirements().getOnBehalfOf() !=
null) {
+
params.setPrincipal(providerParameters.getTokenRequirements().getOnBehalfOf().getPrincipal());
+ } else if (providerParameters.getTokenRequirements().getActAs() !=
null) {
+
params.setPrincipal(providerParameters.getTokenRequirements().getActAs().getPrincipal());
+ } else {
+ params.setPrincipal(providerParameters.getPrincipal());
+ }
params.setRealm(providerParameters.getRealm());
params.setStsProperties(providerParameters.getStsProperties());
params.setTokenRequirements(providerParameters.getTokenRequirements());
@@ -71,14 +80,25 @@ public class ClaimsAttributeStatementPro
while (claimIterator.hasNext()) {
Claim claim = claimIterator.next();
AttributeBean attributeBean = new AttributeBean();
- URI name = claim.getNamespace().relativize(claim.getClaimType());
+
+ URI claimType = claim.getClaimType();
if (WSConstants.WSS_SAML2_TOKEN_TYPE.equals(tokenType)
|| WSConstants.SAML2_NS.equals(tokenType)) {
- attributeBean.setQualifiedName(name.toString());
- attributeBean.setNameFormat(claim.getNamespace().toString());
+ attributeBean.setQualifiedName(claimType.toString());
+ attributeBean.setNameFormat(nameFormat);
} else {
- attributeBean.setSimpleName(name.toString());
-
attributeBean.setQualifiedName(claim.getNamespace().toString());
+ String uri = claimType.toString();
+ int lastSlash = uri.lastIndexOf("/");
+ if (lastSlash == (uri.length() - 1)) {
+ uri = uri.substring(0, lastSlash);
+ lastSlash = uri.lastIndexOf("/");
+ }
+
+ String namespace = uri.substring(0, lastSlash);
+ String name = uri.substring(lastSlash + 1, uri.length());
+
+ attributeBean.setSimpleName(name);
+ attributeBean.setQualifiedName(namespace);
}
attributeBean.setAttributeValues(Collections.singletonList(claim.getValue()));
attributeList.add(attributeBean);
@@ -88,5 +108,13 @@ public class ClaimsAttributeStatementPro
return attrBean;
}
+ public String getNameFormat() {
+ return nameFormat;
+ }
+
+ public void setNameFormat(String nameFormat) {
+ this.nameFormat = nameFormat;
+ }
+
}