[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