- // Mock up an Issuer object for the policy.
- auto_ptr<saml2::Issuer> issuer(saml2::IssuerBuilder::buildIssuer());
- issuer->setName(provider->getEntityID());
- policy.setIssuer(issuer.get());
- issuer.release(); // owned by policy now
-
- log.debug("attempting to find artifact issuing role...");
- const RoleDescriptor* roledesc=provider->getRoleDescriptor(*(policy.getRole()), samlconstants::SAML11_PROTOCOL_ENUM);
- if (!roledesc)
- roledesc=provider->getRoleDescriptor(*(policy.getRole()), samlconstants::SAML10_PROTOCOL_ENUM);
- if (!roledesc || !dynamic_cast<const IDPSSODescriptor*>(roledesc)) {
- log.error("unable to find compatible SAML role (%s) in metadata", policy.getRole()->toString().c_str());
- for_each(artifacts.begin(), artifacts.end(), xmltooling::cleanup<SAMLArtifact>());
+ if (!provider.second || !dynamic_cast<const IDPSSODescriptor*>(provider.second)) {
+ log.error("unable to find compatible SAML 1.x role (%s) in metadata", policy.getRole()->toString().c_str());