[cpp-sp] 02/02: SSPCPP-640 - extend the SessionInitiator URL syntax
Scott Cantor
cantor.2 at osu.edu
Fri Apr 20 17:33:41 EDT 2018
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch master
in repository cpp-sp.
View the commit online:
http://git.shibboleth.net/view/?p=cpp-sp.git;a=commit;h=eeac7969da3198fc3294c19444f892010aeeb20a
commit eeac7969da3198fc3294c19444f892010aeeb20a
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Apr 20 17:33:04 2018 -0400
SSPCPP-640 - extend the SessionInitiator URL syntax
https://issues.shibboleth.net/jira/browse/SSPCPP-640
---
shibsp/handler/impl/SAML2SessionInitiator.cpp | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/shibsp/handler/impl/SAML2SessionInitiator.cpp b/shibsp/handler/impl/SAML2SessionInitiator.cpp
index d9460cf..aea92d3 100644
--- a/shibsp/handler/impl/SAML2SessionInitiator.cpp
+++ b/shibsp/handler/impl/SAML2SessionInitiator.cpp
@@ -111,6 +111,7 @@ namespace shibsp {
const char* NameIDFormat,
const char* SPNameQualifier,
const char* requestTemplate,
+ const char* outgoingBinding,
string& relayState
) const;
@@ -256,6 +257,7 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
const Handler* ACS = nullptr;
pair<bool,const char*> acClass, acComp, nidFormat, spQual;
const char* requestTemplate = nullptr;
+ const char* outgoingBinding = nullptr;
bool isPassive=false,forceAuthn=false;
const Application& app = request.getApplication();
@@ -290,6 +292,8 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
requestTemplate = request.getParameter("template");
}
+ outgoingBinding = request.getParameter("outgoingBinding");
+
pair<bool,bool> flag = getBool("isPassive", request, settingMask);
isPassive = (flag.first && flag.second);
@@ -396,6 +400,7 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
nidFormat.first ? nidFormat.second : nullptr,
spQual.first ? spQual.second : nullptr,
requestTemplate,
+ outgoingBinding,
target
);
}
@@ -426,6 +431,7 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
nidFormat.first ? nidFormat.second : nullptr,
spQual.first ? spQual.second : nullptr,
requestTemplate,
+ outgoingBinding,
target
);
}
@@ -450,6 +456,8 @@ pair<bool,long> SAML2SessionInitiator::run(SPRequest& request, string& entityID,
in.addmember("SPNameQualifier").string(spQual.second);
if (requestTemplate)
in.addmember("template").string(requestTemplate);
+ if (outgoingBinding)
+ in.addmember("outgoingBinding").string(outgoingBinding);
if (acsByIndex.first && acsByIndex.second) {
// Determine index to use.
pair<bool,const char*> ix = pair<bool,const char*>(false,nullptr);
@@ -542,6 +550,7 @@ void SAML2SessionInitiator::receive(DDF& in, ostream& out)
in["NameIDFormat"].string(),
in["SPNameQualifier"].string(),
in["template"].string(),
+ in["outgoingBinding"].string(),
relayState
);
if (!ret.isstruct())
@@ -566,6 +575,7 @@ pair<bool,long> SAML2SessionInitiator::doRequest(
const char* NameIDFormat,
const char* SPNameQualifier,
const char* requestTemplate,
+ const char* outgoingBinding,
string& relayState
) const
{
@@ -612,6 +622,8 @@ pair<bool,long> SAML2SessionInitiator::doRequest(
// Loop over the supportable outgoing bindings.
role = dynamic_cast<const IDPSSODescriptor*>(entity.second);
for (vector<string>::const_iterator b = m_bindings.begin(); b != m_bindings.end(); ++b) {
+ if (outgoingBinding && *b != outgoingBinding)
+ continue;
auto_ptr_XMLCh wideb(b->c_str());
ep = EndpointManager<SingleSignOnService>(role->getSingleSignOnServices()).getByBinding(wideb.get());
if (ep) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list