}
m_log.debug("searching metadata for assertion issuer...");
pair<const EntityDescriptor*,const RoleDescriptor*> entity;
- shibsp::SecurityPolicy* sppol = dynamic_cast<shibsp::SecurityPolicy*>(&policy);
- if (sppol) {
- MetadataProviderCriteria mc(sppol->getApplication(), policy.getIssuer()->getName(), &IDPSSODescriptor::ELEMENT_QNAME, protocol);
- entity = policy.getMetadataProvider()->getEntityDescriptor(mc);
- }
- else {
- MetadataProvider::Criteria mc(policy.getIssuer()->getName(), &IDPSSODescriptor::ELEMENT_QNAME, protocol);
- entity = policy.getMetadataProvider()->getEntityDescriptor(mc);
- }
+ MetadataProvider::Criteria& mc = policy.getMetadataProviderCriteria();
+ mc.entityID_unicode = policy.getIssuer()->getName();
+ mc.role = &IDPSSODescriptor::ELEMENT_QNAME;
+ mc.protocol = protocol;
+ entity = policy.getMetadataProvider()->getEntityDescriptor(mc);
if (!entity.first) {
auto_ptr_char iname(policy.getIssuer()->getName());
m_log.warn("no metadata found, can't establish identity of issuer (%s)", iname.get());
* Constructor.
*
* @param app application performing the lookup
+ */
+ MetadataProviderCriteria(const Application& app) : application(app) {
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param app application performing the lookup
* @param id entityID to lookup
* @param q element/type of role, if any
* @param prot protocol support constant, if any
/*
* Copyright 2001-2007 Internet2
- *
+ *
* 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
/**
* SecurityPolicy.cpp
- *
+ *
* SP-specific SecurityPolicy subclass.
*/
#include "internal.h"
#include "Application.h"
#include "ServiceProvider.h"
+#include "metadata/MetadataProviderCriteria.h"
#include "security/SecurityPolicy.h"
using namespace shibsp;
application.getServiceProvider().getPolicyRules(application.getString("policyId").second);
getRules().assign(rules.begin(), rules.end());
}
+
+opensaml::saml2md::MetadataProvider::Criteria& SecurityPolicy::getMetadataProviderCriteria() const
+{
+ if (!m_metadataCriteria)
+ m_metadataCriteria=new MetadataProviderCriteria(m_application);
+ return *m_metadataCriteria;
+}
/*
* Copyright 2001-2007 Internet2
- *
+ *
* 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
/**
* @file shibsp/security/SecurityPolicy.h
- *
+ *
* SP-specific SecurityPolicy subclass.
*/
#include <saml/binding/SecurityPolicy.h>
namespace shibsp {
-
+
class SHIBSP_API Application;
/**
public:
/**
* Constructor for policy.
- *
+ *
* @param application an Application instance
- * @param role identifies the role (generally IdP or SP) of the policy peer
+ * @param role identifies the role (generally IdP or SP) of the policy peer
* @param validate true iff XML parsing should be done with validation
*/
SecurityPolicy(const Application& application, const xmltooling::QName* role=NULL, bool validate=true);
virtual ~SecurityPolicy() {}
+ opensaml::saml2md::MetadataProvider::Criteria& getMetadataProviderCriteria() const;
+
/**
* Returns the Application associated with the policy.
- *
+ *
* @return the associated Application
*/
const Application& getApplication() const {