X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=shibsp%2Fimpl%2FXMLServiceProvider.cpp;h=92f7a080165502874c440f13fe0d4f4b026bc2b4;hb=9eb59cb19ab82e4668b4e2505e49416fb5150e2b;hp=a3fdf9bfd37d52280f0de93e08278cabfaa3c26a;hpb=4f6580b9d29bf3ba2f0464fdb19ae314a2a322d2;p=shibboleth%2Fsp.git diff --git a/shibsp/impl/XMLServiceProvider.cpp b/shibsp/impl/XMLServiceProvider.cpp index a3fdf9b..92f7a08 100644 --- a/shibsp/impl/XMLServiceProvider.cpp +++ b/shibsp/impl/XMLServiceProvider.cpp @@ -101,6 +101,9 @@ namespace { AttributeResolver* getAttributeResolver() const { return (!m_attrResolver && m_base) ? m_base->getAttributeResolver() : m_attrResolver; } + const set& getRemoteUserAttributeIds() const { + return (m_attributeIds.empty() && m_base) ? m_base->getRemoteUserAttributeIds() : m_attributeIds; + } CredentialResolver* getCredentialResolver() const { return (!m_credResolver && m_base) ? m_base->getCredentialResolver() : m_credResolver; } @@ -132,6 +135,7 @@ namespace { AttributeResolver* m_attrResolver; CredentialResolver* m_credResolver; vector m_audiences; + set m_attributeIds; // manage handler objects vector m_handlers; @@ -372,6 +376,25 @@ XMLApplication::XMLApplication( m_hash+=getString("entityID").second; m_hash=samlConf.hashSHA1(m_hash.c_str(), true); + pair attributes = getString("REMOTE_USER"); + if (attributes.first) { + char* dup = strdup(attributes.second); + char* pos; + char* start = dup; + while (start && *start) { + while (*start && isspace(*start)) + start++; + if (!*start) + break; + pos = strchr(start,' '); + if (pos) + *pos=0; + m_attributeIds.insert(start); + start = pos ? pos+1 : NULL; + } + free(dup); + } + const PropertySet* sessions = getPropertySet("Sessions"); // Process handlers.