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/09/07 20:22:48 UTC

svn commit: r1382112 - in /cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims: ClaimsAttributeStatementProvider.java CorrectedClaimsAttributeStatementProvider.java

Author: coheigea
Date: Fri Sep  7 18:22:48 2012
New Revision: 1382112

URL: http://svn.apache.org/viewvc?rev=1382112&view=rev
Log:
[CXF-4484] - Claims to SAML attribute encoding wrong

Added:
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java
      - copied, changed from r1381388, cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java
Modified:
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java

Modified: cxf/branches/2.6.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.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java?rev=1382112&r1=1382111&r2=1382112&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java Fri Sep  7 18:22:48 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.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java (from r1381388, cxf/branches/2.6.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.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java?p2=cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java&p1=cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java&r1=1381388&r2=1382112&rev=1382112&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/ClaimsAttributeStatementProvider.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/CorrectedClaimsAttributeStatementProvider.java Fri Sep  7 18:22:48 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
@@ -77,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);
@@ -94,5 +108,13 @@ public class ClaimsAttributeStatementPro
         return attrBean;
     }
 
+    public String getNameFormat() {
+        return nameFormat;
+    }
+
+    public void setNameFormat(String nameFormat) {
+        this.nameFormat = nameFormat;
+    }
+
 }