Set fourth file version digit to signify rebuild.
[shibboleth/cpp-opensaml.git] / saml / saml2 / profile / BrowserSSOProfileValidator.h
1 /**
2  * Licensed to the University Corporation for Advanced Internet
3  * Development, Inc. (UCAID) under one or more contributor license
4  * agreements. See the NOTICE file distributed with this work for
5  * additional information regarding copyright ownership.
6  *
7  * UCAID licenses this file to you under the Apache License,
8  * Version 2.0 (the "License"); you may not use this file except
9  * in compliance with the License. You may obtain a copy of the
10  * License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17  * either express or implied. See the License for the specific
18  * language governing permissions and limitations under the License.
19  */
20
21 /**
22  * @file saml/saml2/profile/BrowserSSOProfileValidator.h
23  *
24  * SAML 2.0 Browser SSO Profile Assertion Validator.
25  */
26
27 #ifndef __saml2_ssoval_h__
28 #define __saml2_ssoval_h__
29
30 #include <saml/saml2/profile/AssertionValidator.h>
31
32 #include <xmltooling/unicode.h>
33
34 namespace opensaml {
35     namespace saml2 {
36
37 #if defined (_MSC_VER)
38     #pragma warning( push )
39     #pragma warning( disable : 4251 )
40 #endif
41
42         /**
43          * @deprecated
44          * SAML 2.0 Browser SSO Profile Assertion Validator
45          *
46          * <p>In addition to standard core requirements for validity, SSO assertions
47          * <strong>MUST</strong> be bearer-confirmable.
48          */
49         class SAML_API BrowserSSOProfileValidator : public AssertionValidator
50         {
51         public:
52             /**
53              * Constructor
54              *
55              * @param recipient     name of assertion recipient (implicit audience)
56              * @param audiences     additional audience values
57              * @param ts            timestamp to evaluate assertion conditions, or 0 to bypass check
58              * @param destination   server location to which assertion was delivered, or 0 to bypass check
59              * @param requestID     ID of request that resulted in assertion, or nullptr if unsolicited
60              */
61             BrowserSSOProfileValidator(
62                 const XMLCh* recipient,
63                 const std::vector<const XMLCh*>* audiences=nullptr,
64                 time_t ts=0,
65                 const char* destination=nullptr,
66                 const char* requestID=nullptr
67                 );
68
69             virtual ~BrowserSSOProfileValidator();
70
71             void validateAssertion(const Assertion& assertion) const;
72
73             /**
74              * Return address information from the confirmed bearer SubjectConfirmation, if any.
75              *
76              * @return  address information
77              */
78             const char* getAddress() const;
79
80         protected:
81             /** Server location to which assertion was delivered. */
82             xmltooling::auto_ptr_XMLCh m_destination;
83
84             /** ID of request that resulted in assertions. */
85             xmltooling::auto_ptr_XMLCh m_requestID;
86
87         private:
88             /** Address in confirmed bearer SubjectConfirmationData. */
89             mutable std::string m_address;
90         };
91
92 #if defined (_MSC_VER)
93     #pragma warning( pop )
94 #endif
95
96     };
97 };
98
99 #endif /* __saml2_ssoval_h__ */