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/signature/SignableObject.h>
27 #include <saml/util/SAMLConstants.h>
29 #include <xmltooling/AttributeExtensibleXMLObject.h>
30 #include <xmltooling/ElementProxy.h>
31 #include <xmltooling/XMLObjectBuilder.h>
32 #include <xmltooling/signature/KeyInfo.h>
33 #include <xmltooling/signature/Signature.h>
34 #include <xmltooling/util/DateTime.h>
36 #define DECL_SAML1POBJECTBUILDER(cname) \
37 DECL_XMLOBJECTBUILDER(SAML_API,cname,samlconstants::SAML1P_NS,samlconstants::SAML1P_PREFIX)
42 class SAML_API Action;
43 class SAML_API Assertion;
44 class SAML_API AssertionIDReference;
45 class SAML_API AttributeDesignator;
46 class SAML_API Evidence;
47 class SAML_API Subject;
51 * @namespace opensaml::saml1p
52 * SAML 1.x protocol namespace
56 DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionArtifact,Artifact,SAML 1.x AssertionArtifact element);
57 DECL_XMLOBJECT_SIMPLE(SAML_API,StatusMessage,Message,SAML 1.x StatusMessage element);
59 BEGIN_XMLOBJECT(SAML_API,RespondWith,xmltooling::XMLObject,SAML 1.x RespondWith element);
60 /** Gets the QName content of the element. */
61 virtual xmltooling::QName* getQName() const=0;
62 /** Sets the QName content of the element. */
63 virtual void setQName(const xmltooling::QName* qname)=0;
66 BEGIN_XMLOBJECT(SAML_API,Query,xmltooling::XMLObject,SAML 1.x Query element);
69 BEGIN_XMLOBJECT(SAML_API,SubjectQuery,Query,SAML 1.x SubjectQuery element);
70 DECL_TYPED_FOREIGN_CHILD(Subject,saml1);
73 BEGIN_XMLOBJECT(SAML_API,AuthenticationQuery,SubjectQuery,SAML 1.x AuthenticationQuery element);
74 DECL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD);
75 /** AuthenticationQueryType local name */
76 static const XMLCh TYPE_NAME[];
79 BEGIN_XMLOBJECT(SAML_API,AttributeQuery,SubjectQuery,SAML 1.x AttributeQuery element);
80 DECL_STRING_ATTRIB(Resource,RESOURCE);
81 DECL_TYPED_FOREIGN_CHILDREN(AttributeDesignator,saml1);
82 /** AttributeQueryType local name */
83 static const XMLCh TYPE_NAME[];
86 BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionQuery,SubjectQuery,SAML 1.x AuthorizationDecisionQuery element);
87 DECL_STRING_ATTRIB(Resource,RESOURCE);
88 DECL_TYPED_FOREIGN_CHILDREN(Action,saml1);
89 DECL_TYPED_FOREIGN_CHILD(Evidence,saml1);
90 /** AuthorizationDecisionQueryType local name */
91 static const XMLCh TYPE_NAME[];
94 BEGIN_XMLOBJECT(SAML_API,RequestAbstractType,SignableObject,SAML 1.x RequestAbstractType base type);
95 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
96 DECL_STRING_ATTRIB(RequestID,REQUESTID);
97 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
98 DECL_TYPED_CHILDREN(RespondWith);
99 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
100 /** RequestAbstractType local name */
101 static const XMLCh TYPE_NAME[];
104 BEGIN_XMLOBJECT(SAML_API,Request,RequestAbstractType,SAML 1.x Request element);
105 DECL_TYPED_CHILD(Query);
106 DECL_TYPED_CHILD(SubjectQuery);
107 DECL_TYPED_CHILD(AuthenticationQuery);
108 DECL_TYPED_CHILD(AttributeQuery);
109 DECL_TYPED_CHILD(AuthorizationDecisionQuery);
110 DECL_TYPED_FOREIGN_CHILDREN(AssertionIDReference,saml1);
111 DECL_TYPED_CHILDREN(AssertionArtifact);
112 /** RequestType local name */
113 static const XMLCh TYPE_NAME[];
116 BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
117 DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
118 DECL_TYPED_CHILD(StatusCode);
119 /** StatusCodeType local name */
120 static const XMLCh TYPE_NAME[];
121 /** Success Status Code */
122 static xmltooling::QName SUCCESS;
123 /** Requester Error Status Code */
124 static xmltooling::QName REQUESTER;
125 /** Responder Error Status Code */
126 static xmltooling::QName RESPONDER;
127 /** Version Mismatch Error Status Code */
128 static xmltooling::QName VERSIONMISMATCH;
131 BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::XMLObject,SAML 1.x StatusDetail element);
132 DECL_XMLOBJECT_CHILDREN(Detail);
133 /** StatusDetailType local name */
134 static const XMLCh TYPE_NAME[];
137 BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
138 DECL_TYPED_CHILD(StatusCode);
139 DECL_TYPED_CHILD(StatusMessage);
140 DECL_TYPED_CHILD(StatusDetail);
141 /** StatusType local name */
142 static const XMLCh TYPE_NAME[];
145 BEGIN_XMLOBJECT(SAML_API,ResponseAbstractType,SignableObject,SAML 1.x ResponseAbstractType base type);
146 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
147 DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
148 DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
149 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
150 DECL_STRING_ATTRIB(Recipient,RECIPIENT);
151 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
152 /** ResponseAbstractType local name */
153 static const XMLCh TYPE_NAME[];
156 BEGIN_XMLOBJECT(SAML_API,Response,ResponseAbstractType,SAML 1.x Response element);
157 DECL_TYPED_CHILD(Status);
158 DECL_TYPED_FOREIGN_CHILDREN(Assertion,saml1);
159 /** ResponseType local name */
160 static const XMLCh TYPE_NAME[];
163 DECL_SAML1POBJECTBUILDER(AssertionArtifact);
164 DECL_SAML1POBJECTBUILDER(AttributeQuery);
165 DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
166 DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
167 DECL_SAML1POBJECTBUILDER(Request);
168 DECL_SAML1POBJECTBUILDER(RespondWith);
169 DECL_SAML1POBJECTBUILDER(Response);
170 DECL_SAML1POBJECTBUILDER(Status);
171 DECL_SAML1POBJECTBUILDER(StatusCode);
172 DECL_SAML1POBJECTBUILDER(StatusDetail);
173 DECL_SAML1POBJECTBUILDER(StatusMessage);
176 * Registers builders and validators for SAML 1.x Protocol classes into the runtime.
178 void SAML_API registerProtocolClasses();
182 #endif /* __saml1_protocols_h__ */