2 * Copyright 2001-2006 Internet2
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 * @file saml/saml1/core/Protocols.h
20 * XMLObjects representing the SAML 1.x Protocols schema
23 #ifndef __saml1_protocols_h__
24 #define __saml1_protocols_h__
26 #include <saml/RootObject.h>
27 #include <saml/util/SAMLConstants.h>
29 #include <xmltooling/XMLObjectBuilder.h>
30 #include <xmltooling/signature/KeyInfo.h>
31 #include <xmltooling/signature/Signature.h>
32 #include <xmltooling/util/DateTime.h>
34 #define DECL_SAML1POBJECTBUILDER(cname) \
35 DECL_XMLOBJECTBUILDER(SAML_API,cname,samlconstants::SAML1P_NS,samlconstants::SAML1P_PREFIX)
40 class SAML_API Action;
41 class SAML_API Assertion;
42 class SAML_API AssertionIDReference;
43 class SAML_API AttributeDesignator;
44 class SAML_API Evidence;
45 class SAML_API Subject;
49 * @namespace opensaml::saml1p
50 * SAML 1.x protocol namespace
54 DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionArtifact,Artifact,SAML 1.x AssertionArtifact element);
55 DECL_XMLOBJECT_SIMPLE(SAML_API,StatusMessage,Message,SAML 1.x StatusMessage element);
57 BEGIN_XMLOBJECT(SAML_API,RespondWith,xmltooling::XMLObject,SAML 1.x RespondWith element);
58 /** Gets the QName content of the element. */
59 virtual xmltooling::QName* getQName() const=0;
60 /** Sets the QName content of the element. */
61 virtual void setQName(const xmltooling::QName* qname)=0;
64 BEGIN_XMLOBJECT(SAML_API,Query,xmltooling::XMLObject,SAML 1.x Query element);
67 BEGIN_XMLOBJECT(SAML_API,SubjectQuery,Query,SAML 1.x SubjectQuery element);
68 DECL_TYPED_FOREIGN_CHILD(Subject,saml1);
71 BEGIN_XMLOBJECT(SAML_API,AuthenticationQuery,SubjectQuery,SAML 1.x AuthenticationQuery element);
72 DECL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD);
73 /** AuthenticationQueryType local name */
74 static const XMLCh TYPE_NAME[];
77 BEGIN_XMLOBJECT(SAML_API,AttributeQuery,SubjectQuery,SAML 1.x AttributeQuery element);
78 DECL_STRING_ATTRIB(Resource,RESOURCE);
79 DECL_TYPED_FOREIGN_CHILDREN(AttributeDesignator,saml1);
80 /** AttributeQueryType local name */
81 static const XMLCh TYPE_NAME[];
84 BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionQuery,SubjectQuery,SAML 1.x AuthorizationDecisionQuery element);
85 DECL_STRING_ATTRIB(Resource,RESOURCE);
86 DECL_TYPED_FOREIGN_CHILDREN(Action,saml1);
87 DECL_TYPED_FOREIGN_CHILD(Evidence,saml1);
88 /** AuthorizationDecisionQueryType local name */
89 static const XMLCh TYPE_NAME[];
92 BEGIN_XMLOBJECT(SAML_API,RequestAbstractType,RootObject,SAML 1.x RequestAbstractType base type);
93 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
94 DECL_STRING_ATTRIB(RequestID,REQUESTID);
95 DECL_INHERITED_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
96 DECL_TYPED_CHILDREN(RespondWith);
97 DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
98 /** RequestAbstractType local name */
99 static const XMLCh TYPE_NAME[];
102 BEGIN_XMLOBJECT(SAML_API,Request,RequestAbstractType,SAML 1.x Request element);
103 DECL_TYPED_CHILD(Query);
104 DECL_TYPED_CHILD(SubjectQuery);
105 DECL_TYPED_CHILD(AuthenticationQuery);
106 DECL_TYPED_CHILD(AttributeQuery);
107 DECL_TYPED_CHILD(AuthorizationDecisionQuery);
108 DECL_TYPED_FOREIGN_CHILDREN(AssertionIDReference,saml1);
109 DECL_TYPED_CHILDREN(AssertionArtifact);
110 /** RequestType local name */
111 static const XMLCh TYPE_NAME[];
114 BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
115 DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
116 DECL_TYPED_CHILD(StatusCode);
117 /** StatusCodeType local name */
118 static const XMLCh TYPE_NAME[];
119 /** Success Status Code */
120 static xmltooling::QName SUCCESS;
121 /** Requester Error Status Code */
122 static xmltooling::QName REQUESTER;
123 /** Responder Error Status Code */
124 static xmltooling::QName RESPONDER;
125 /** Version Mismatch Error Status Code */
126 static xmltooling::QName VERSIONMISMATCH;
129 BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::ElementExtensibleXMLObject,SAML 1.x StatusDetail element);
130 /** StatusDetailType local name */
131 static const XMLCh TYPE_NAME[];
134 BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
135 DECL_TYPED_CHILD(StatusCode);
136 DECL_TYPED_CHILD(StatusMessage);
137 DECL_TYPED_CHILD(StatusDetail);
138 /** StatusType local name */
139 static const XMLCh TYPE_NAME[];
142 BEGIN_XMLOBJECT(SAML_API,ResponseAbstractType,RootObject,SAML 1.x ResponseAbstractType base type);
143 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
144 DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
145 DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
146 DECL_INHERITED_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
147 DECL_STRING_ATTRIB(Recipient,RECIPIENT);
148 DECL_INHERITED_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
149 /** ResponseAbstractType local name */
150 static const XMLCh TYPE_NAME[];
153 BEGIN_XMLOBJECT(SAML_API,Response,ResponseAbstractType,SAML 1.x Response element);
154 DECL_TYPED_CHILD(Status);
155 DECL_TYPED_FOREIGN_CHILDREN(Assertion,saml1);
156 /** ResponseType local name */
157 static const XMLCh TYPE_NAME[];
160 DECL_SAML1POBJECTBUILDER(AssertionArtifact);
161 DECL_SAML1POBJECTBUILDER(AttributeQuery);
162 DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
163 DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
164 DECL_SAML1POBJECTBUILDER(Request);
165 DECL_SAML1POBJECTBUILDER(RespondWith);
166 DECL_SAML1POBJECTBUILDER(Response);
167 DECL_SAML1POBJECTBUILDER(Status);
168 DECL_SAML1POBJECTBUILDER(StatusCode);
169 DECL_SAML1POBJECTBUILDER(StatusDetail);
170 DECL_SAML1POBJECTBUILDER(StatusMessage);
173 * Registers builders and validators for SAML 1.x Protocol classes into the runtime.
175 void SAML_API registerProtocolClasses();
179 #endif /* __saml1_protocols_h__ */