[cpp-sp] branch maint-3 updated: SSPCPP-1012 - Add deprecation warnings where required
Codeberg
noreply at shibboleth.net
Thu Aug 13 14:26:21 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch maint-3
in repository cpp-sp.
View the commit online:
https://codeberg.org/Shibboleth/cpp-sp/commit/40dbd40727eea41894e0088245dcb19e3bb61b74
The following commit(s) were added to refs/heads/maint-3 by this push:
new 40dbd407 SSPCPP-1012 - Add deprecation warnings where required
40dbd407 is described below
commit 40dbd40727eea41894e0088245dcb19e3bb61b74
Author: Scott Cantor <scott at restingparrotsoftware.com>
AuthorDate: Thu Aug 13 10:25:14 2026 -0400
SSPCPP-1012 - Add deprecation warnings where required
https://shibboleth.atlassian.net/browse/SSPCPP-1012
Major round of warnings added.
---
adfs/adfs.cpp | 3 +++
apache/mod_shib.cpp | 11 ++++++++---
plugins/TimeAccessControl.cpp | 5 +++++
shibsp/ServiceProvider.cpp | 2 +-
shibsp/binding/impl/ArtifactResolver.cpp | 2 +-
shibsp/handler/impl/AssertionLookup.cpp | 6 ++++++
shibsp/handler/impl/CookieSessionInitiator.cpp | 4 ++--
shibsp/handler/impl/DiscoveryFeed.cpp | 6 ++++++
shibsp/handler/impl/ExternalAuthHandler.cpp | 6 +++++-
shibsp/handler/impl/FormSessionInitiator.cpp | 4 ++--
shibsp/handler/impl/SAML1Consumer.cpp | 4 ++++
shibsp/handler/impl/SAML2NameIDMgmt.cpp | 6 +++++-
shibsp/handler/impl/Shib1SessionInitiator.cpp | 7 +++++++
shibsp/handler/impl/TransformSessionInitiator.cpp | 4 +++-
shibsp/handler/impl/WAYFSessionInitiator.cpp | 3 +++
shibsp/impl/XMLAccessControl.cpp | 2 ++
shibsp/impl/XMLApplication.cpp | 18 ++++++++++++++++++
17 files changed, 81 insertions(+), 12 deletions(-)
diff --git a/adfs/adfs.cpp b/adfs/adfs.cpp
index a3f7ee52..9370a970 100644
--- a/adfs/adfs.cpp
+++ b/adfs/adfs.cpp
@@ -332,6 +332,9 @@ namespace {
extern "C" int ADFS_EXPORTS xmltooling_extension_init(void*)
{
SPConfig& conf=SPConfig::getConfig();
+
+ conf.deprecation().warn("WS-Federation (via adfs extension) is removed in the next major version");
+
conf.SessionInitiatorManager.registerFactory("ADFS", ADFSSessionInitiatorFactory);
conf.LogoutInitiatorManager.registerFactory("ADFS", ADFSLogoutInitiatorFactory);
conf.AssertionConsumerServiceManager.registerFactory("ADFS", ADFSLogoutFactory);
diff --git a/apache/mod_shib.cpp b/apache/mod_shib.cpp
index ff7336e7..fdd3cafa 100644
--- a/apache/mod_shib.cpp
+++ b/apache/mod_shib.cpp
@@ -1387,9 +1387,12 @@ AccessControl::aclresult_t htAccessControl::authorized(const SPRequest& request,
else if (!strcmp(w,"group") && !remote_user.empty()) {
status = (doGroup(*sta, t) == shib_acl_true);
}
- else if (!strcmp(w,"authnContextClassRef") || !strcmp(w,"authnContextDeclRef")) {
- const char* ref = !strcmp(w, "authnContextClassRef") ? session->getAuthnContextClassRef() : session->getAuthnContextDeclRef();
- status = (doAuthnContext(*sta, ref, t) == shib_acl_true);
+ else if (!strcmp(w,"authnContextClassRef")) {
+ status = (doAuthnContext(*sta, session->getAuthnContextClassRef(), t) == shib_acl_true);
+ }
+ else if (!strcmp(w,"authnContextDeclRef")) {
+ request.log(SPRequest::SPWarn, "DEPRECATED: authnContextDeclRef require rule is removed in next major version");
+ status = (doAuthnContext(*sta, session->getAuthnContextDeclRef(), t) == shib_acl_true);
}
else if (!session) {
request.log(SPRequest::SPError, string("htaccess: require ") + w + " not given a valid session, are you using lazy sessions?");
@@ -1756,6 +1759,8 @@ extern "C" authz_status shib_acdecl_check_authz(request_rec* r, const char* requ
if (!sta.first)
return sta.second;
+ sta.first->log(SPRequest::SPWarn, "DEPRECATED: authnContextDeclRef require rule is removed in next major version");
+
const htAccessControl& hta = dynamic_cast<const ApacheRequestMapper*>(sta.first->getRequestSettings().first)->getHTAccessControl();
try {
diff --git a/plugins/TimeAccessControl.cpp b/plugins/TimeAccessControl.cpp
index 57250711..1abf661a 100644
--- a/plugins/TimeAccessControl.cpp
+++ b/plugins/TimeAccessControl.cpp
@@ -29,6 +29,7 @@
#include <shibsp/exceptions.h>
#include <shibsp/AccessControl.h>
#include <shibsp/SessionCache.h>
+#include <shibsp/SPConfig.h>
#include <shibsp/SPRequest.h>
#include <boost/lexical_cast.hpp>
@@ -135,6 +136,10 @@ Rule::Rule(const DOMElement* e)
if (XMLString::equals(e->getLocalName(), Time)) {
m_type = TM_TIME;
+ if (tokens.back().back() != 'Z') {
+ SPConfig::getConfig().deprecation().warn(
+ "Support for non-UTC timestamps in Time access control rule is removed in the next major version");
+ }
auto_ptr_XMLCh widen(tokens.back().c_str());
try {
XMLDateTime dt(widen.get());
diff --git a/shibsp/ServiceProvider.cpp b/shibsp/ServiceProvider.cpp
index 32bea980..325858a1 100644
--- a/shibsp/ServiceProvider.cpp
+++ b/shibsp/ServiceProvider.cpp
@@ -415,7 +415,7 @@ pair<bool,long> ServiceProvider::doAuthentication(SPRequest& request, bool handl
// No session, but we require one. Initiate a new session using the indicated method.
const SessionInitiator* initiator=nullptr;
if (requireSessionWith.first) {
- SPConfig::getConfig().deprecation().warn("requireSessionWith");
+ SPConfig::getConfig().deprecation().warn("requireSessionWith is removed from next major version");
initiator=app->getSessionInitiatorById(requireSessionWith.second);
if (!initiator) {
throw ConfigurationException(
diff --git a/shibsp/binding/impl/ArtifactResolver.cpp b/shibsp/binding/impl/ArtifactResolver.cpp
index 878f05ea..13d039a2 100644
--- a/shibsp/binding/impl/ArtifactResolver.cpp
+++ b/shibsp/binding/impl/ArtifactResolver.cpp
@@ -193,7 +193,7 @@ ArtifactResponse* ArtifactResolver::resolve(
// The local filesystem is presumed to be "secure" so that unsigned, unencrypted responses are acceptable.
// The binding here is not SOAP, but rather REST-like, with the base location used to construct a filename
// containing the artifact message handle.
- SPConfig::getConfig().deprecation().warn("Local artifact resolution");
+ SPConfig::getConfig().deprecation().warn("Local/filesystem-based artifact resolution is removed from next major version");
foundEndpoint = true;
auto_ptr_char temp((*ep)->getLocation());
if (temp.get()) {
diff --git a/shibsp/handler/impl/AssertionLookup.cpp b/shibsp/handler/impl/AssertionLookup.cpp
index 280c6a72..c434ad0b 100644
--- a/shibsp/handler/impl/AssertionLookup.cpp
+++ b/shibsp/handler/impl/AssertionLookup.cpp
@@ -86,6 +86,8 @@ namespace shibsp {
AssertionLookup::AssertionLookup(const DOMElement* e, const char* appId)
: SecuredHandler(e, Category::getInstance(SHIBSP_LOGCAT ".Handler.AssertionLookup"), "exportACL", "127.0.0.1 ::1")
{
+ SPConfig().getConfig().deprecation().warn("AssertionLookup handler is removed in next major version");
+
pair<bool,const char*> prop = getString("Location");
if (!prop.first)
throw ConfigurationException("AssertionLookup handler requires Location property.");
@@ -109,6 +111,8 @@ pair<bool,long> AssertionLookup::run(SPRequest& request, bool isHandler) const
return processMessage(request.getApplication(), request, request);
}
else {
+ SPConfig().getConfig().deprecation().warn("AssertionLookup handler is removed in next major version");
+
// When not out of process, we remote all the message processing.
DDF out,in = wrap(request);
DDFJanitor jin(in), jout(out);
@@ -126,6 +130,8 @@ pair<bool,long> AssertionLookup::run(SPRequest& request, bool isHandler) const
void AssertionLookup::receive(DDF& in, ostream& out)
{
+ SPConfig().getConfig().deprecation().warn("AssertionLookup handler is removed in next major version");
+
// Find application.
const char* aid = in["application_id"].string();
const Application* app = aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
diff --git a/shibsp/handler/impl/CookieSessionInitiator.cpp b/shibsp/handler/impl/CookieSessionInitiator.cpp
index aa264488..f142c0fc 100644
--- a/shibsp/handler/impl/CookieSessionInitiator.cpp
+++ b/shibsp/handler/impl/CookieSessionInitiator.cpp
@@ -57,9 +57,9 @@ namespace shibsp {
CookieSessionInitiator(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.Cookie")),
m_followMultiple(getBool("followMultiple").second) {
- m_supportedOptions.insert("isPassive");
- SPConfig::getConfig().deprecation().warn(COOKIE_SESSION_INITIATOR" SessionInitiator is slated for removal");
+ SPConfig::getConfig().deprecation().warn(COOKIE_SESSION_INITIATOR" SessionInitiator is removed from next major version");
+ m_supportedOptions.insert("isPassive");
}
virtual ~CookieSessionInitiator() {}
diff --git a/shibsp/handler/impl/DiscoveryFeed.cpp b/shibsp/handler/impl/DiscoveryFeed.cpp
index efe66eb5..507f0b60 100644
--- a/shibsp/handler/impl/DiscoveryFeed.cpp
+++ b/shibsp/handler/impl/DiscoveryFeed.cpp
@@ -110,6 +110,8 @@ namespace shibsp {
DiscoveryFeed::DiscoveryFeed(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".Handler.DiscoveryFeed"), &g_Blocker), m_cacheToClient(false)
{
+ SPConfig::getConfig().deprecation().warn(DISCOVERY_FEED_HANDLER" handler is removed from next major version");
+
pair<bool,const char*> prop = getString("Location");
if (!prop.first)
throw ConfigurationException("DiscoveryFeed handler requires Location property.");
@@ -180,6 +182,8 @@ pair<bool,long> DiscoveryFeed::run(SPRequest& request, bool isHandler) const
}
}
else {
+ SPConfig::getConfig().deprecation().warn(DISCOVERY_FEED_HANDLER" handler is removed from next major version");
+
// When not out of process, we remote all the message processing.
DDF out,in = DDF(m_address.c_str());
in.addmember("application_id").string(request.getApplication().getId());
@@ -234,6 +238,8 @@ pair<bool,long> DiscoveryFeed::run(SPRequest& request, bool isHandler) const
void DiscoveryFeed::receive(DDF& in, ostream& out)
{
+ SPConfig::getConfig().deprecation().warn(DISCOVERY_FEED_HANDLER" handler is removed from next major version");
+
// Find application.
const char* aid = in["application_id"].string();
const Application* app=aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
diff --git a/shibsp/handler/impl/ExternalAuthHandler.cpp b/shibsp/handler/impl/ExternalAuthHandler.cpp
index 5404e391..96f8e518 100644
--- a/shibsp/handler/impl/ExternalAuthHandler.cpp
+++ b/shibsp/handler/impl/ExternalAuthHandler.cpp
@@ -165,7 +165,7 @@ namespace {
ExternalAuth::ExternalAuth(const DOMElement* e, const char* appId)
: SecuredHandler(e, Category::getInstance(SHIBSP_LOGCAT ".Handler.ExternalAuth"), "acl", "127.0.0.1 ::1")
{
- SPConfig::getConfig().deprecation().warn(EXTERNAL_AUTH_HANDLER" handler");
+ SPConfig::getConfig().deprecation().warn(EXTERNAL_AUTH_HANDLER" handler is removed from next major version");
pair<bool,const char*> prop = getString("Location");
if (!prop.first)
@@ -198,6 +198,8 @@ pair<bool,long> ExternalAuth::run(SPRequest& request, bool isHandler) const
return processMessage(request.getApplication(), *fakedreq, request, in);
}
else {
+ SPConfig::getConfig().deprecation().warn(EXTERNAL_AUTH_HANDLER" handler is removed from next major version");
+
// When not out of process, we remote all the message processing.
vector<string> headers(1, "User-Agent");
headers.push_back("Accept");
@@ -218,6 +220,8 @@ pair<bool,long> ExternalAuth::run(SPRequest& request, bool isHandler) const
void ExternalAuth::receive(DDF& in, ostream& out)
{
+ SPConfig::getConfig().deprecation().warn(EXTERNAL_AUTH_HANDLER" handler is removed from next major version");
+
// Find application.
const char* aid = in["application_id"].string();
const Application* app = aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
diff --git a/shibsp/handler/impl/FormSessionInitiator.cpp b/shibsp/handler/impl/FormSessionInitiator.cpp
index 79ba87c2..6f379bc3 100644
--- a/shibsp/handler/impl/FormSessionInitiator.cpp
+++ b/shibsp/handler/impl/FormSessionInitiator.cpp
@@ -53,10 +53,10 @@ namespace shibsp {
public:
FormSessionInitiator(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.Form")), m_template(getString("template").second) {
+
+ SPConfig::getConfig().deprecation().warn(FORM_SESSION_INITIATOR" SessionInitiator is removed from next major version");
if (!m_template)
throw ConfigurationException("Form SessionInitiator requires a template property.");
-
- SPConfig::getConfig().deprecation().warn(FORM_SESSION_INITIATOR" SessionInitiator is slated for removal");
}
virtual ~FormSessionInitiator() {}
diff --git a/shibsp/handler/impl/SAML1Consumer.cpp b/shibsp/handler/impl/SAML1Consumer.cpp
index 15e27e43..82bb1522 100644
--- a/shibsp/handler/impl/SAML1Consumer.cpp
+++ b/shibsp/handler/impl/SAML1Consumer.cpp
@@ -73,6 +73,8 @@ namespace shibsp {
SAML1Consumer(const DOMElement* e, const char* appId, bool deprecationSupport=true)
: AssertionConsumerService(e, appId, Category::getInstance(SHIBSP_LOGCAT ".SSO.SAML1"), nullptr, nullptr, deprecationSupport) {
#ifndef SHIBSP_LITE
+ SPConfig::getConfig().deprecation().warn("SAML 1.1 support is removed from next major version");
+
m_post = XMLString::equals(getString("Binding").second, samlconstants::SAML1_PROFILE_BROWSER_POST);
if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess))
m_ssoRule.reset(SAMLConfig::getConfig().SecurityPolicyRuleManager.newPlugin(SAML1BROWSERSSO_POLICY_RULE, e, deprecationSupport));
@@ -144,6 +146,8 @@ void SAML1Consumer::implementProtocol(
const XMLObject& xmlObject
) const
{
+ SPConfig::getConfig().deprecation().warn("SAML 1.1 support is removed from next major version");
+
// Implementation of SAML 1.x SSO profile(s).
m_log.debug("processing message against SAML 1.x SSO profile");
diff --git a/shibsp/handler/impl/SAML2NameIDMgmt.cpp b/shibsp/handler/impl/SAML2NameIDMgmt.cpp
index 9b9970a9..9b3c780c 100644
--- a/shibsp/handler/impl/SAML2NameIDMgmt.cpp
+++ b/shibsp/handler/impl/SAML2NameIDMgmt.cpp
@@ -143,7 +143,7 @@ namespace shibsp {
SAML2NameIDMgmt::SAML2NameIDMgmt(const DOMElement* e, const char* appId, bool deprecationSupport)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".NameIDMgmt.SAML2"))
{
- SPConfig::getConfig().deprecation().warn("SAML 2.0 NameID Management support");
+ SPConfig::getConfig().deprecation().warn("Support for SAML 2 NameID management is removed from next major version");
#ifndef SHIBSP_LITE
if (SPConfig::getConfig().isEnabled(SPConfig::OutOfProcess)) {
SAMLConfig& conf = SAMLConfig::getConfig();
@@ -204,6 +204,8 @@ pair<bool,long> SAML2NameIDMgmt::run(SPRequest& request, bool isHandler) const
return doRequest(request.getApplication(), request, request);
}
else {
+ SPConfig::getConfig().deprecation().warn("Support for SAML 2 NameID management is removed from next major version");
+
// When not out of process, we remote all the message processing.
vector<string> headers(1,"Cookie");
headers.push_back("User-Agent");
@@ -216,6 +218,8 @@ pair<bool,long> SAML2NameIDMgmt::run(SPRequest& request, bool isHandler) const
void SAML2NameIDMgmt::receive(DDF& in, ostream& out)
{
+ SPConfig::getConfig().deprecation().warn("Support for SAML 2 NameID management is removed from next major version");
+
// Find application.
const char* aid = in["application_id"].string();
const Application* app = aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
diff --git a/shibsp/handler/impl/Shib1SessionInitiator.cpp b/shibsp/handler/impl/Shib1SessionInitiator.cpp
index ba4f47e2..e789a685 100644
--- a/shibsp/handler/impl/Shib1SessionInitiator.cpp
+++ b/shibsp/handler/impl/Shib1SessionInitiator.cpp
@@ -65,6 +65,9 @@ namespace shibsp {
public:
Shib1SessionInitiator(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.Shib1"), nullptr, this), m_appId(appId) {
+
+ SPConfig::getConfig().deprecation().warn(SHIB1_SESSION_INITIATOR" SessionInitiator is removed from next major version");
+
// If Location isn't set, defer address registration until the setParent call.
pair<bool,const char*> loc = getString("Location");
if (loc.first) {
@@ -128,6 +131,8 @@ void Shib1SessionInitiator::setParent(const PropertySet* parent)
pair<bool,long> Shib1SessionInitiator::run(SPRequest& request, string& entityID, bool isHandler) const
{
+ SPConfig::getConfig().deprecation().warn("SAML 1.1 support is removed from next major version");
+
// We have to know the IdP to function.
if (entityID.empty() || !checkCompatibility(request, isHandler))
return make_pair(false, 0L);
@@ -238,6 +243,8 @@ pair<bool,long> Shib1SessionInitiator::unwrap(SPRequest& request, DDF& out) cons
void Shib1SessionInitiator::receive(DDF& in, ostream& out)
{
+ SPConfig::getConfig().deprecation().warn("SAML 1.1 support is removed from next major version");
+
// Find application.
const char* aid = in["application_id"].string();
const Application* app = aid ? SPConfig::getConfig().getServiceProvider()->getApplication(aid) : nullptr;
diff --git a/shibsp/handler/impl/TransformSessionInitiator.cpp b/shibsp/handler/impl/TransformSessionInitiator.cpp
index 0be3b53c..ad901b21 100644
--- a/shibsp/handler/impl/TransformSessionInitiator.cpp
+++ b/shibsp/handler/impl/TransformSessionInitiator.cpp
@@ -80,6 +80,9 @@ namespace shibsp {
public:
TransformSessionInitiator(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.Transform"), &g_TSINFilter), m_appId(appId) {
+
+ SPConfig::getConfig().deprecation().warn(TRANSFORM_SESSION_INITIATOR" SessionInitiator is removed from next major version");
+
// If Location isn't set, defer address registration until the setParent call.
pair<bool,const char*> loc = getString("Location");
if (loc.first) {
@@ -114,7 +117,6 @@ namespace shibsp {
}
}
#endif
- SPConfig::getConfig().deprecation().warn(TRANSFORM_SESSION_INITIATOR" SessionInitiator is slated for removal");
}
virtual ~TransformSessionInitiator() {}
diff --git a/shibsp/handler/impl/WAYFSessionInitiator.cpp b/shibsp/handler/impl/WAYFSessionInitiator.cpp
index 0247ee92..024beeca 100644
--- a/shibsp/handler/impl/WAYFSessionInitiator.cpp
+++ b/shibsp/handler/impl/WAYFSessionInitiator.cpp
@@ -60,6 +60,9 @@ namespace shibsp {
public:
WAYFSessionInitiator(const DOMElement* e, const char* appId)
: AbstractHandler(e, Category::getInstance(SHIBSP_LOGCAT ".SessionInitiator.WAYF"), nullptr, this), m_url(nullptr) {
+
+ SPConfig::getConfig().deprecation().warn(WAYF_SESSION_INITIATOR" SessionInitiator is removed from next major version");
+
pair<bool,const char*> url = getString("URL");
if (!url.first)
throw ConfigurationException("WAYF SessionInitiator requires a URL property.");
diff --git a/shibsp/impl/XMLAccessControl.cpp b/shibsp/impl/XMLAccessControl.cpp
index 687487d3..6c5fea7e 100644
--- a/shibsp/impl/XMLAccessControl.cpp
+++ b/shibsp/impl/XMLAccessControl.cpp
@@ -208,6 +208,7 @@ AccessControl::aclresult_t Rule::authorized(const SPRequest& request, const Sess
return shib_acl_false;
}
else if (m_alias == "authnContextDeclRef") {
+ SPConfig::getConfig().deprecation().warn("authnContextDeclRef access control rule is removed in the next major version");
const char* ref = session->getAuthnContextDeclRef();
if (ref && m_vals.find(ref) != m_vals.end()) {
request.log(SPRequest::SPDebug, string("AccessControl plugin expecting authnContextDeclRef (") + ref + "), authz granted");
@@ -295,6 +296,7 @@ AccessControl::aclresult_t RuleRegex::authorized(const SPRequest& request, const
return shib_acl_false;
}
else if (m_alias == "authnContextDeclRef") {
+ SPConfig::getConfig().deprecation().warn("authnContextDeclRef access control rule is removed in the next major version");
if (session->getAuthnContextDeclRef() && m_re->matches(session->getAuthnContextDeclRef())) {
request.log(SPRequest::SPDebug, string("AccessControl plugin expecting authnContextDeclRef (") + m_exp.get() + "), authz granted");
return shib_acl_true;
diff --git a/shibsp/impl/XMLApplication.cpp b/shibsp/impl/XMLApplication.cpp
index 6e3f3dc4..b43c9566 100644
--- a/shibsp/impl/XMLApplication.cpp
+++ b/shibsp/impl/XMLApplication.cpp
@@ -494,6 +494,8 @@ void XMLApplication::doHandlers(const ProtocolProvider* pp, const DOMElement* e,
pair<bool,const char*> location = sessions ? sessions->getString("exportLocation") : pair<bool,const char*>(false,nullptr);
if (location.first) {
try {
+ SPConfig::getConfig().deprecation().warn("exportLocation and associated features are removed in next major version");
+
DOMElement* exportElement = e->getOwnerDocument()->createElementNS(e->getNamespaceURI(), _Handler);
exportElement->setAttributeNS(nullptr,Location,sessions->getXMLString("exportLocation").second);
pair<bool,const XMLCh*> exportACL = sessions->getXMLString("exportACL");
@@ -738,6 +740,11 @@ void XMLApplication::doSSO(const ProtocolProvider& pp, set<string>& protocols, D
while (prottokens.hasMoreTokens()) {
auto_ptr_char prot(prottokens.nextToken());
+ if (strcmp(prot.get(), "SAML2")) {
+ SPConfig::getConfig().deprecation().warn(
+ string("Support for '") + prot.get() + "' protocol is removed from next major version");
+ }
+
// Look for initiator.
const PropertySet* initiator = pp.getInitiator(prot.get(), "SSO");
if (initiator) {
@@ -845,10 +852,15 @@ void XMLApplication::doSSO(const ProtocolProvider& pp, set<string>& protocols, D
static const XMLCh discoveryProtocol[] = UNICODE_LITERAL_17(d,i,s,c,o,v,e,r,y,P,r,o,t,o,c,o,l);
static const XMLCh discoveryURL[] = UNICODE_LITERAL_12(d,i,s,c,o,v,e,r,y,U,R,L);
static const XMLCh _URL[] = UNICODE_LITERAL_3(U,R,L);
+ static const XMLCh WAYF[] = UNICODE_LITERAL_4(W,A,Y,F);
if (!hasChildElements) {
const XMLCh* discop = e->getAttributeNS(nullptr, discoveryProtocol);
if (discop && *discop) {
+ if (XMLString::equals(discop, WAYF)) {
+ SPConfig::getConfig().deprecation().warn("Support for 'WAYF' discoveryProtocol is removed in next major version");
+ }
+
const XMLCh* discou = e->getAttributeNS(nullptr, discoveryURL);
if (discou && *discou) {
// Append a session initiator element of the designated type to the root element.
@@ -916,6 +928,11 @@ void XMLApplication::doLogout(const ProtocolProvider& pp, set<string>& protocols
while (prottokens.hasMoreTokens()) {
auto_ptr_char prot(prottokens.nextToken());
+ if (strcmp(prot.get(), "SAML2") && strcmp(prot.get(), "Local")) {
+ SPConfig::getConfig().deprecation().warn(
+ string("Support for '") + prot.get() + "' protocol is removed from next major version");
+ }
+
// Look for initiator.
const PropertySet* initiator = pp.getInitiator(prot.get(), "Logout");
if (initiator) {
@@ -1029,6 +1046,7 @@ void XMLApplication::doNameIDMgmt(const ProtocolProvider& pp, set<string>& proto
{
if (!e->hasChildNodes())
return;
+
const DOMNamedNodeMap* nimprops = e->getAttributes();
XMLSize_t nimpropslen = nimprops ? nimprops->getLength() : 0;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list