+++ /dev/null
-/*
- * Copyright 2010 JANET(UK)
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @file shibresolver/resolver.h
- *
- * An embeddable component interface to Shibboleth SP attribute processing.
- */
-
-#ifndef __shibresolver_h__
-#define __shibresolver_h__
-
-#include <shibresolver/base.h>
-
-#include <shibsp/RequestMapper.h>
-#include <shibsp/SPConfig.h>
-
-#include <string>
-#include <vector>
-
-namespace xmltooling {
- class XMLTOOL_API XMLObject;
-};
-
-namespace shibsp {
- class SHIBSP_API Attribute;
- class SHIBSP_API SPRequest;
-};
-
-namespace shibresolver {
-
-#if defined (_MSC_VER)
- #pragma warning( push )
- #pragma warning( disable : 4250 4251 )
-#endif
-
- /**
- * An embeddable component interface to Shibboleth SP attribute processing.
- */
- class SHIBRESOLVER_API ShibbolethResolver
- {
- MAKE_NONCOPYABLE(ShibbolethResolver);
- protected:
- ShibbolethResolver();
- public:
- virtual ~ShibbolethResolver();
-
- /**
- * Sets the calling service request, making the Shibboleth SP responsible for
- * mapping the service to an Application instance.
- *
- * @param request identifies the service request performing attribute resolution
- */
- void setRequest(const shibsp::SPRequest* request);
-
- /**
- * Sets the application ID to use for resolution, bypassing the mapping
- * function of the Shibboleth SP.
- *
- * @param appID identifies an application in the SP configuration
- */
- void setApplicationID(const char* appID);
-
- /**
- * Sets the identity issuer to use for resolution.
- *
- * @param issuer entityID of the identity "source", if known
- */
- void setIssuer(const char* issuer);
-
- /**
- * Adds an XML token as input to the resolver, generally a SAML assertion.
- * <p>The caller retains ownership of the object.
- *
- * @param token an input token to evaluate
- */
- void addToken(const xmltooling::XMLObject* token);
-
- /**
- * Adds an Attribute as input to the resolver.
- * <p>The caller retains ownership of the object.
- *
- * @param attr an input Attribute
- */
- void addAttribute(shibsp::Attribute* attr);
-
- /**
- * Resolves Attributes and attaches them to the resolver object.
- * <p>The caller is responsible for transferring any Attributes it wishes to
- * retain out of the resolver.
- */
- virtual void resolve();
-
- /**
- * Returns a modifiable array of resolved Attribute objects.
- * <p>The caller may take ownership of any or all by removing them
- * from the array.
- *
- * @return array of resolved Attributes
- */
- std::vector<shibsp::Attribute*>& getResolvedAttributes();
-
- /**
- * Returns mapped PropertySet and AccessControl objects, if any.
- *
- * @return mapped PropertySet/AccesssControl pair
- */
- shibsp::RequestMapper::Settings getSettings() const;
-
- /**
- * Initializes SP runtime objects based on an XML configuration string or a configuration pathname.
- * <p>Each process using the library MUST call this function exactly once before using any library classes.
- *
- * @param features bitmask of SP components to enable
- * @param config a snippet of XML to parse (it <strong>MUST</strong> contain a type attribute) or a pathname
- * @param rethrow true iff caught exceptions should be rethrown instead of just returning a true/false result
- * @return true iff initialization was successful
- */
- static bool init(
-#ifdef SHIBSP_LITE
- unsigned long features = (shibsp::SPConfig::Listener|shibsp::SPConfig::InProcess),
-#else
- unsigned long features = shibsp::SPConfig::OutOfProcess,
-#endif
- const char* config = NULL,
- bool rethrow = false
- );
-
- /**
- * Shuts down runtime.
- *
- * Each process using the library SHOULD call this function exactly once before terminating itself.
- */
- static void term();
-
- /**
- * Returns a ShibbolethResolver instance.
- *
- * @return a ShibbolethResolver instance, must be freed by the caller.
- */
- static ShibbolethResolver* create();
-
- protected:
- /** Service request. */
- const shibsp::SPRequest* m_request;
-
- /** Application ID. */
- std::string m_appID;
-
- /** Source of identity, if known. */
- std::string m_issuer;
-
- /** Input tokens. */
- std::vector<const xmltooling::XMLObject*> m_tokens;
-
- /** Input attributes. */
- std::vector<shibsp::Attribute*> m_inputAttributes;
-
- private:
- shibsp::ServiceProvider* m_sp;
- std::vector<shibsp::Attribute*> m_resolvedAttributes;
- };
-
-#if defined (_MSC_VER)
- #pragma warning( pop )
-#endif
-
-};
-
-#endif /* __shibresolver_h__ */