First set of logout base classes and non-building draft of SP-initiated logout.
[shibboleth/sp.git] / shibsp / attribute / resolver / AttributeResolver.h
index 2e143b9..4376c89 100644 (file)
@@ -60,19 +60,21 @@ namespace shibsp {
          * 
          * @param application       reference to Application that owns the eventual Session
          * @param issuer            issuing metadata of assertion issuer, if known
+         * @param protocol          protocol used to establish Session
          * @param nameid            principal identifier, normalized to SAML 2, if any
          * @param authncontext_class    method/category of authentication event, if known
          * @param authncontext_decl specifics of authentication event, if known
-         * @param tokens            assertions initiating the session, if any
+         * @param tokens            assertions initiating the Session, if any
          * @param attributes        map of previously resolved attributes, if any
          * @return  newly created ResolutionContext, owned by caller
          */
         virtual ResolutionContext* createResolutionContext(
             const Application& application,
             const opensaml::saml2md::EntityDescriptor* issuer,
+            const XMLCh* protocol,
             const opensaml::saml2::NameID* nameid,
-            const char* authncontext_class=NULL,
-            const char* authncontext_decl=NULL,
+            const XMLCh* authncontext_class=NULL,
+            const XMLCh* authncontext_decl=NULL,
             const std::vector<const opensaml::Assertion*>* tokens=NULL,
             const std::multimap<std::string,Attribute*>* attributes=NULL
             ) const=0;
@@ -95,6 +97,13 @@ namespace shibsp {
          * @throws AttributeResolutionException thrown if there is a problem resolving the attributes for the subject
          */
         virtual void resolveAttributes(ResolutionContext& ctx) const=0;
+
+        /**
+         * Populates an array with the set of Attribute IDs that might be generated.
+         *
+         * @param attributes    array to populate
+         */
+        virtual void getAttributeIds(std::vector<std::string>& attributes) const=0;
     };
 
 #if defined (_MSC_VER)