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 2013/07/17 15:59:00 UTC

svn commit: r1504142 - in /cxf/branches/2.6.x-fixes/services/sts/sts-core/src: main/java/org/apache/cxf/sts/token/provider/ main/java/org/apache/cxf/sts/token/renewer/ main/java/org/apache/cxf/sts/token/validator/ test/java/org/apache/cxf/sts/token/ren...

Author: coheigea
Date: Wed Jul 17 13:58:59 2013
New Revision: 1504142

URL: http://svn.apache.org/r1504142
Log:
Merged revisions 1504120 via  git cherry-pick from
https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes

........
  r1504120 | coheigea | 2013-07-17 14:23:26 +0100 (Wed, 17 Jul 2013) | 10 lines

  Merged revisions 1504117 via  git cherry-pick from
  https://svn.apache.org/repos/asf/cxf/trunk

  ........
    r1504117 | coheigea | 2013-07-17 14:21:37 +0100 (Wed, 17 Jul 2013) | 2 lines

    [CXF-5133] - CXF STS renewed token not itself renewable.

  ........

........

Modified:
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewer.java
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/SAMLTokenValidator.java
    cxf/branches/2.6.x-fixes/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewerTest.java

Modified: cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java?rev=1504142&r1=1504141&r2=1504142&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/provider/SAMLTokenProvider.java Wed Jul 17 13:58:59 2013
@@ -138,10 +138,7 @@ public class SAMLTokenProvider implement
                 securityToken.setToken(token);
                 securityToken.setPrincipal(tokenParameters.getPrincipal());
 
-                Properties props = securityToken.getProperties();
-                if (props == null) {
-                    props = new Properties();
-                }
+                Properties props = new Properties();
                 securityToken.setProperties(props);
                 if (tokenParameters.getRealm() != null) {
                     props.setProperty(STSConstants.TOKEN_REALM, tokenParameters.getRealm());

Modified: cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewer.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewer.java?rev=1504142&r1=1504141&r2=1504142&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewer.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewer.java Wed Jul 17 13:58:59 2013
@@ -35,7 +35,6 @@ import javax.xml.ws.handler.MessageConte
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
@@ -45,6 +44,7 @@ import org.apache.cxf.sts.STSPropertiesM
 import org.apache.cxf.sts.SignatureProperties;
 import org.apache.cxf.sts.request.ReceivedToken;
 import org.apache.cxf.sts.request.ReceivedToken.STATE;
+import org.apache.cxf.sts.request.Renewing;
 import org.apache.cxf.sts.token.provider.ConditionsProvider;
 import org.apache.cxf.sts.token.provider.DefaultConditionsProvider;
 import org.apache.cxf.sts.token.realm.SAMLRealm;
@@ -211,7 +211,7 @@ public class SAMLTokenRenewer implements
             
             // Cache the token
             storeTokenInCache(
-                tokenStore, renewedAssertion, tokenParameters.getPrincipal(), tokenParameters.getRealm()
+                tokenStore, renewedAssertion, tokenParameters.getPrincipal(), tokenParameters
             );
             
             response.setToken(token);
@@ -553,7 +553,7 @@ public class SAMLTokenRenewer implements
         TokenStore tokenStore, 
         AssertionWrapper assertion, 
         Principal principal,
-        String tokenRealm
+        TokenRenewerParameters tokenParameters
     ) throws WSSecurityException {
         // Store the successfully renewed token in the cache
         byte[] signatureValue = assertion.getSignatureValue();
@@ -569,11 +569,29 @@ public class SAMLTokenRenewer implements
             securityToken.setToken(assertion.getElement());
             securityToken.setPrincipal(principal);
             
+            Properties props = new Properties();
+            String tokenRealm = tokenParameters.getRealm();
             if (tokenRealm != null) {
-                Properties props = new Properties();
                 props.setProperty(STSConstants.TOKEN_REALM, tokenRealm);
-                securityToken.setProperties(props);
             }
+            
+            // Handle Renewing logic
+            Renewing renewing = tokenParameters.getTokenRequirements().getRenewing();
+            if (renewing != null) {
+                props.put(
+                    STSConstants.TOKEN_RENEWING_ALLOW, 
+                    String.valueOf(renewing.isAllowRenewing())
+                );
+                props.put(
+                    STSConstants.TOKEN_RENEWING_ALLOW_AFTER_EXPIRY, 
+                    String.valueOf(renewing.isAllowRenewingAfterExpiry())
+                );
+            } else {
+                props.setProperty(STSConstants.TOKEN_RENEWING_ALLOW, "true");
+                props.setProperty(STSConstants.TOKEN_RENEWING_ALLOW_AFTER_EXPIRY, "false");
+            }
+            
+            securityToken.setProperties(props);
 
             int hash = Arrays.hashCode(signatureValue);
             securityToken.setTokenHash(hash);

Modified: cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/SAMLTokenValidator.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/SAMLTokenValidator.java?rev=1504142&r1=1504141&r2=1504142&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/SAMLTokenValidator.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/main/java/org/apache/cxf/sts/token/validator/SAMLTokenValidator.java Wed Jul 17 13:58:59 2013
@@ -209,7 +209,7 @@ public class SAMLTokenValidator implemen
                     Properties props = secToken.getProperties();
                     if (props != null) {
                         String cachedRealm = props.getProperty(STSConstants.TOKEN_REALM);
-                        if (!tokenRealm.equals(cachedRealm)) {
+                        if (cachedRealm != null && !tokenRealm.equals(cachedRealm)) {
                             return response;
                         }
                     }

Modified: cxf/branches/2.6.x-fixes/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewerTest.java?rev=1504142&r1=1504141&r2=1504142&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewerTest.java (original)
+++ cxf/branches/2.6.x-fixes/services/sts/sts-core/src/test/java/org/apache/cxf/sts/token/renewer/SAMLTokenRenewerTest.java Wed Jul 17 13:58:59 2013
@@ -135,6 +135,17 @@ public class SAMLTokenRenewerTest extend
         assertTrue(validatorResponse != null);
         assertTrue(validatorResponse.getToken() != null);
         assertTrue(validatorResponse.getToken().getState() == STATE.VALID);
+        
+        // Now try to renew it again!
+        renewerParameters.setToken(validatorResponse.getToken());
+        
+        samlTokenRenewer = new SAMLTokenRenewer();
+        samlTokenRenewer.setVerifyProofOfPossession(false);
+        assertTrue(samlTokenRenewer.canHandleToken(validatorResponse.getToken()));
+        
+        renewerResponse = samlTokenRenewer.renewToken(renewerParameters);
+        assertTrue(renewerResponse != null);
+        assertTrue(renewerResponse.getToken() != null);
     }
     
     /**