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.
20 * XMLObjects representing the SAML 1.x Protocols schema
23 #ifndef __saml1_protocols_h__
24 #define __saml1_protocols_h__
26 #include <saml/saml1/core/Assertions.h>
28 #define DECL_SAML1POBJECTBUILDER(cname) \
29 DECL_XMLOBJECTBUILDER(SAML_API,cname,opensaml::SAMLConstants::SAML1P_NS,opensaml::SAMLConstants::SAML1P_PREFIX)
35 * SAML 1.x protocol namespace
39 DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionArtifact,Artifact,SAML 1.x AssertionArtifact element);
40 DECL_XMLOBJECT_SIMPLE(SAML_API,StatusMessage,Message,SAML 1.x StatusMessage element);
42 BEGIN_XMLOBJECT(SAML_API,RespondWith,xmltooling::XMLObject,SAML 1.x RespondWith element);
43 /** Gets the QName content of the element. */
44 virtual xmltooling::QName* getQName() const=0;
45 /** Sets the QName content of the element. */
46 virtual void setQName(const xmltooling::QName* qname)=0;
49 BEGIN_XMLOBJECT(SAML_API,Query,xmltooling::XMLObject,SAML 1.x Query element);
52 BEGIN_XMLOBJECT(SAML_API,SubjectQuery,Query,SAML 1.x SubjectQuery element);
53 DECL_TYPED_FOREIGN_CHILD(Subject,saml1);
56 BEGIN_XMLOBJECT(SAML_API,AuthenticationQuery,SubjectQuery,SAML 1.x AuthenticationQuery element);
57 DECL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD);
58 /** AuthenticationQueryType local name */
59 static const XMLCh TYPE_NAME[];
62 BEGIN_XMLOBJECT(SAML_API,AttributeQuery,SubjectQuery,SAML 1.x AttributeQuery element);
63 DECL_STRING_ATTRIB(Resource,RESOURCE);
64 DECL_TYPED_FOREIGN_CHILDREN(AttributeDesignator,saml1);
65 /** AttributeQueryType local name */
66 static const XMLCh TYPE_NAME[];
69 BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionQuery,SubjectQuery,SAML 1.x AuthorizationDecisionQuery element);
70 DECL_STRING_ATTRIB(Resource,RESOURCE);
71 DECL_TYPED_FOREIGN_CHILDREN(Action,saml1);
72 DECL_TYPED_FOREIGN_CHILD(Evidence,saml1);
73 /** AuthorizationDecisionQueryType local name */
74 static const XMLCh TYPE_NAME[];
77 BEGIN_XMLOBJECT(SAML_API,RequestAbstractType,SignableObject,SAML 1.x RequestAbstractType base type);
78 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
79 DECL_STRING_ATTRIB(RequestID,REQUESTID);
80 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
81 DECL_TYPED_CHILDREN(RespondWith);
82 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
83 /** RequestAbstractType local name */
84 static const XMLCh TYPE_NAME[];
87 BEGIN_XMLOBJECT(SAML_API,Request,RequestAbstractType,SAML 1.x Request element);
88 DECL_TYPED_CHILD(Query);
89 DECL_TYPED_CHILD(SubjectQuery);
90 DECL_TYPED_CHILD(AuthenticationQuery);
91 DECL_TYPED_CHILD(AttributeQuery);
92 DECL_TYPED_CHILD(AuthorizationDecisionQuery);
93 DECL_TYPED_FOREIGN_CHILDREN(AssertionIDReference,saml1);
94 DECL_TYPED_CHILDREN(AssertionArtifact);
95 /** RequestType local name */
96 static const XMLCh TYPE_NAME[];
99 BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
100 DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
101 DECL_TYPED_CHILD(StatusCode);
102 /** StatusCodeType local name */
103 static const XMLCh TYPE_NAME[];
104 /** Success Status Code */
105 static xmltooling::QName SUCCESS;
106 /** Requester Error Status Code */
107 static xmltooling::QName REQUESTER;
108 /** Responder Error Status Code */
109 static xmltooling::QName RESPONDER;
110 /** Version Mismatch Error Status Code */
111 static xmltooling::QName VERSIONMISMATCH;
114 BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::XMLObject,SAML 1.x StatusDetail element);
115 DECL_XMLOBJECT_CHILDREN(Detail);
116 /** StatusDetailType local name */
117 static const XMLCh TYPE_NAME[];
120 BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
121 DECL_TYPED_CHILD(StatusCode);
122 DECL_TYPED_CHILD(StatusMessage);
123 DECL_TYPED_CHILD(StatusDetail);
124 /** StatusType local name */
125 static const XMLCh TYPE_NAME[];
128 BEGIN_XMLOBJECT(SAML_API,ResponseAbstractType,SignableObject,SAML 1.x ResponseAbstractType base type);
129 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
130 DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
131 DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
132 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
133 DECL_STRING_ATTRIB(Recipient,RECIPIENT);
134 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
135 /** ResponseAbstractType local name */
136 static const XMLCh TYPE_NAME[];
139 BEGIN_XMLOBJECT(SAML_API,Response,ResponseAbstractType,SAML 1.x Response element);
140 DECL_TYPED_CHILD(Status);
141 DECL_TYPED_FOREIGN_CHILDREN(Assertion,saml1);
142 /** ResponseType local name */
143 static const XMLCh TYPE_NAME[];
146 DECL_SAML1POBJECTBUILDER(AssertionArtifact);
147 DECL_SAML1POBJECTBUILDER(AttributeQuery);
148 DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
149 DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
150 DECL_SAML1POBJECTBUILDER(Request);
151 DECL_SAML1POBJECTBUILDER(RespondWith);
152 DECL_SAML1POBJECTBUILDER(Response);
153 DECL_SAML1POBJECTBUILDER(Status);
154 DECL_SAML1POBJECTBUILDER(StatusCode);
155 DECL_SAML1POBJECTBUILDER(StatusDetail);
156 DECL_SAML1POBJECTBUILDER(StatusMessage);
159 * Registers builders and validators for SAML 1.x Protocol classes into the runtime.
161 void SAML_API registerProtocolClasses();
164 * Validator suite for SAML 1.x Protocol schema validation.
166 extern SAML_API xmltooling::ValidatorSuite ProtocolSchemaValidators;
170 #endif /* __saml1_protocols_h__ */