[cpp-sp COMMIT] in /branches/REL_2: schemas/shibboleth-2.0-native-sp-config.xsd shibsp/handler/impl/AssertionConsumer...

noreply at shibboleth.net noreply at shibboleth.net
Tue Nov 27 23:53:47 EST 2012


Author: scantor
Date: Tue Nov 27 23:53:47 2012
New Revision: 3821

URL: http://svn.shibboleth.net/view/cpp-sp?rev=3821&view=rev
Log:
https://issues.shibboleth.net/jira/browse/SSPCPP-527

Modified:
    branches/REL_2/schemas/shibboleth-2.0-native-sp-config.xsd
    branches/REL_2/shibsp/handler/impl/AssertionConsumerService.cpp
    branches/REL_2/shibsp/handler/impl/SAML2Logout.cpp
    branches/REL_2/shibsp/handler/impl/SAML2NameIDMgmt.cpp
    branches/REL_2/shibsp/impl/XMLServiceProvider.cpp

Modified: branches/REL_2/schemas/shibboleth-2.0-native-sp-config.xsd
URL: http://svn.shibboleth.net/view/cpp-sp/branches/REL_2/schemas/shibboleth-2.0-native-sp-config.xsd?rev=3821&r1=3820&r2=3821&view=diff
==============================================================================
--- branches/REL_2/schemas/shibboleth-2.0-native-sp-config.xsd (original)
+++ branches/REL_2/schemas/shibboleth-2.0-native-sp-config.xsd Tue Nov 27 23:53:47 2012
@@ -9,7 +9,7 @@
 	elementFormDefault="qualified"
 	attributeFormDefault="unqualified"
 	blockDefault="substitution"
-	version="2.5">
+	version="2.5.1">
 
   <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd" />
   <import namespace="urn:oasis:names:tc:SAML:2.0:assertion" schemaLocation="saml-schema-assertion-2.0.xsd"/>
@@ -480,6 +480,8 @@
           </annotation>
           <simpleContent>
             <extension base="conf:listOfStrings">
+              <attribute name="policyId" type="conf:string"/>
+              <attribute name="ignoreNoPassive" type="boolean"/>
               <attribute name="discoveryProtocol" type="conf:string"/>
               <attribute name="discoveryURL" type="anyURI"/>
               <attributeGroup ref="conf:SessionInitiatorGroup"/>
@@ -494,15 +496,23 @@
           </annotation>
           <simpleContent>
             <extension base="conf:listOfStrings">
+              <attribute name="policyId" type="conf:string"/>
               <attributeGroup ref="conf:LogoutInitiatorGroup"/>
             </extension>
           </simpleContent>
         </complexType>
       </element>
-      <element name="NameIDMgmt" type="conf:listOfStrings" minOccurs="0">
-        <annotation>
-          <documentation>Implicitly configures ManageNameIDService handlers</documentation>
-        </annotation>
+      <element name="NameIDMgmt" minOccurs="0">
+        <complexType>
+          <annotation>
+            <documentation>Implicitly configures ManageNameIDService handlers</documentation>
+          </annotation>
+          <simpleContent>
+            <extension base="conf:listOfStrings">
+              <attribute name="policyId" type="conf:string"/>
+            </extension>
+          </simpleContent>
+        </complexType>
       </element>
       <choice minOccurs="0" maxOccurs="unbounded">
         <element ref="conf:SessionInitiator"/>
@@ -546,6 +556,12 @@
     </annotation>
   </attribute>
 
+  <attribute name="ignoreNoPassive" type="boolean">
+    <annotation>
+      <documentation>Used to ignore NoPassive errors in AssertionConsumerService endpoints</documentation>
+    </annotation>
+  </attribute>
+  
   <attributeGroup name="SessionInitiatorGroup">
     <annotation>
       <documentation>Options common to explicit and implicit SessionInitiators</documentation>

Modified: branches/REL_2/shibsp/handler/impl/AssertionConsumerService.cpp
URL: http://svn.shibboleth.net/view/cpp-sp/branches/REL_2/shibsp/handler/impl/AssertionConsumerService.cpp?rev=3821&r1=3820&r2=3821&view=diff
==============================================================================
--- branches/REL_2/shibsp/handler/impl/AssertionConsumerService.cpp (original)
+++ branches/REL_2/shibsp/handler/impl/AssertionConsumerService.cpp Tue Nov 27 23:53:47 2012
@@ -161,7 +161,9 @@
 {
 #ifndef SHIBSP_LITE
     // Locate policy key.
-    pair<bool,const char*> prop = getString("policyId", m_configNS.get());  // namespace-qualified if inside handler element
+    pair<bool,const char*> prop = getString("policyId", m_configNS.get());  // may be namespace-qualified if inside handler element
+    if (!prop.first)
+        prop = getString("policyId");   // try unqualified
     if (!prop.first)
         prop = application.getString("policyId");   // unqualified in Application(s) element
 
@@ -226,24 +228,31 @@
         return finalizeResponse(application, httpRequest, httpResponse, relayState);
     }
     catch (XMLToolingException& ex) {
+        // Recover relay state.
+        if (!relayState.empty()) {
+            try {
+                recoverRelayState(application, httpRequest, httpResponse, relayState, false);
+            }
+            catch (std::exception& rsex) {
+                m_log.warn("error recovering relay state: %s", rsex.what());
+                relayState.erase();
+                recoverRelayState(application, httpRequest, httpResponse, relayState, false);
+            }
+        }
+
         // Check for isPassive error condition.
         const char* sc2 = ex.getProperty("statusCode2");

[... 163 lines stripped ...]


More information about the commits mailing list