X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=saml%2Fsaml2%2Fcore%2Fimpl%2FProtocols20SchemaValidators.cpp;h=9e660dd5c35127f76df80b890ef02eb540066a9a;hb=58f50dd342eafbb4ab30cb741344ebb183929ffd;hp=547a11627113d36326acfb67f9d3defa940d298d;hpb=e8d75900802dfa84c06290f88e365fd355ce6881;p=shibboleth%2Fcpp-opensaml.git diff --git a/saml/saml2/core/impl/Protocols20SchemaValidators.cpp b/saml/saml2/core/impl/Protocols20SchemaValidators.cpp index 547a116..9e660dd 100644 --- a/saml/saml2/core/impl/Protocols20SchemaValidators.cpp +++ b/saml/saml2/core/impl/Protocols20SchemaValidators.cpp @@ -1,29 +1,34 @@ -/* -* Copyright 2001-2006 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 +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. * - * http://www.apache.org/licenses/LICENSE-2.0 + * UCAID licenses this file to you 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 * - * 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. + * 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. */ /** * Protocols20SchemaValidators.cpp * - * Schema-based validators for SAML 2.0 Protocols classes + * Schema-based validators for SAML 2.0 Protocols classes. */ #include "internal.h" #include "exceptions.h" #include "saml2/core/Protocols.h" +#include #include using namespace opensaml::saml2p; @@ -31,6 +36,7 @@ using namespace opensaml::saml2; using namespace opensaml; using namespace xmltooling; using namespace std; +using samlconstants::SAML20P_NS; namespace opensaml { namespace saml2p { @@ -50,7 +56,7 @@ namespace opensaml { public: void operator()(const XMLObject* xmlObject) const { const XMLCh* ns=xmlObject->getElementQName().getNamespaceURI(); - if (XMLString::equals(ns,SAMLConstants::SAML20P_NS) || !ns || !*ns) { + if (XMLString::equals(ns,SAML20P_NS) || !ns || !*ns) { throw ValidationException( "Object contains an illegal extension child element ($1).", params(1,xmlObject->getElementQName().toString().c_str()) @@ -63,7 +69,7 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE(RequestAbstractType,ID); XMLOBJECTVALIDATOR_REQUIRE(RequestAbstractType,Version); XMLOBJECTVALIDATOR_REQUIRE(RequestAbstractType,IssueInstant); - if (!XMLString::equals(SAMLConstants::SAML20_VERSION, ptr->getVersion())) + if (!XMLString::equals(samlconstants::SAML20_VERSION, ptr->getVersion())) throw ValidationException("Request has wrong SAML Version."); END_XMLOBJECTVALIDATOR; @@ -77,14 +83,14 @@ namespace opensaml { XMLOBJECTVALIDATOR_REQUIRE(StatusResponseType,Version); XMLOBJECTVALIDATOR_REQUIRE(StatusResponseType,IssueInstant); XMLOBJECTVALIDATOR_REQUIRE(StatusResponseType,Status); - if (!XMLString::equals(SAMLConstants::SAML20_VERSION, ptr->getVersion())) + if (!XMLString::equals(samlconstants::SAML20_VERSION, ptr->getVersion())) throw ValidationException("StatusResponse has wrong SAML Version."); END_XMLOBJECTVALIDATOR; BEGIN_XMLOBJECTVALIDATOR(SAML_DLLLOCAL,Extensions); if (!ptr->hasChildren()) throw ValidationException("Extensions must have at least one child element."); - const list& anys=ptr->getXMLObjects(); + const vector& anys=ptr->getUnknownXMLObjects(); for_each(anys.begin(),anys.end(),checkWildcardNS()); END_XMLOBJECTVALIDATOR; @@ -94,11 +100,11 @@ namespace opensaml { //TODO test this !!! // If this is a top-level StatusCode (ie. parent is a Status), // then there are only 4 valid values per SAML Core. - if (ptr->getParent()!=NULL && ptr->getParent()->getElementQName().hasLocalPart()) + if (ptr->getParent()!=nullptr && ptr->getParent()->getElementQName().hasLocalPart()) { - QName pq = ptr->getParent()->getElementQName(); + xmltooling::QName pq = ptr->getParent()->getElementQName(); - if ( XMLString::equals(pq.getNamespaceURI(), SAMLConstants::SAML20P_NS) && + if ( XMLString::equals(pq.getNamespaceURI(), SAML20P_NS) && XMLString::equals(pq.getLocalPart(), Status::LOCAL_NAME)) { const XMLCh* code = ptr->getValue(); @@ -168,7 +174,7 @@ namespace opensaml { BEGIN_XMLOBJECTVALIDATOR_SUB(SAML_DLLLOCAL,AuthnRequest,RequestAbstractType); RequestAbstractTypeSchemaValidator::validate(xmlObject); if (ptr->getAssertionConsumerServiceIndex().first - && (ptr->getAssertionConsumerServiceURL()!=NULL || ptr->getProtocolBinding()!=NULL)) + && (ptr->getAssertionConsumerServiceURL()!=nullptr || ptr->getProtocolBinding()!=nullptr)) throw xmltooling::ValidationException("On AuthnRequest AssertionConsumerServiceIndex is mutually exclusive with both AssertionConsumerServiceURL and ProtocolBinding"); END_XMLOBJECTVALIDATOR; @@ -224,25 +230,25 @@ namespace opensaml { }; #define REGISTER_ELEMENT(cname) \ - q=QName(SAMLConstants::SAML20P_NS,cname::LOCAL_NAME); \ + q=xmltooling::QName(SAML20P_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_TYPE(cname) \ - q=QName(SAMLConstants::SAML20P_NS,cname::TYPE_NAME); \ + q=xmltooling::QName(SAML20P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); \ SchemaValidators.registerValidator(q,new cname##SchemaValidator()) #define REGISTER_ELEMENT_NOVAL(cname) \ - q=QName(SAMLConstants::SAML20P_NS,cname::LOCAL_NAME); \ + q=xmltooling::QName(SAML20P_NS,cname::LOCAL_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); #define REGISTER_TYPE_NOVAL(cname) \ - q=QName(SAMLConstants::SAML20P_NS,cname::TYPE_NAME); \ + q=xmltooling::QName(SAML20P_NS,cname::TYPE_NAME); \ XMLObjectBuilder::registerBuilder(q,new cname##Builder()); void opensaml::saml2p::registerProtocolClasses() { - QName q; + xmltooling::QName q; REGISTER_ELEMENT(Artifact); REGISTER_ELEMENT(ArtifactResolve); REGISTER_ELEMENT(ArtifactResponse); @@ -297,7 +303,12 @@ void opensaml::saml2p::registerProtocolClasses() { REGISTER_TYPE_NOVAL(StatusDetail); REGISTER_TYPE_NOVAL(Terminate); - q=QName(SAMLConstants::SAML20P_THIRDPARTY_EXT_NS,RespondTo::LOCAL_NAME); + q=xmltooling::QName(samlconstants::SAML20P_THIRDPARTY_EXT_NS,RespondTo::LOCAL_NAME); XMLObjectBuilder::registerBuilder(q,new RespondToBuilder()); SchemaValidators.registerValidator(q,new RespondToSchemaValidator()); + + q=xmltooling::QName(samlconstants::SAML20P_ASYNCSLO_EXT_NS,Asynchronous::LOCAL_NAME); + XMLObjectBuilder::registerBuilder(q,new AsynchronousBuilder()); + q=xmltooling::QName(samlconstants::SAML20P_ASYNCSLO_EXT_NS,Asynchronous::TYPE_NAME); + XMLObjectBuilder::registerBuilder(q,new AsynchronousBuilder()); }