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,AbstractRequest,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);
85 BEGIN_XMLOBJECT(SAML_API,Request,AbstractRequest,SAML 1.x Request element);
86 DECL_TYPED_CHILD(Query);
87 DECL_TYPED_CHILD(SubjectQuery);
88 DECL_TYPED_CHILD(AuthenticationQuery);
89 DECL_TYPED_CHILD(AttributeQuery);
90 DECL_TYPED_CHILD(AuthorizationDecisionQuery);
91 DECL_TYPED_FOREIGN_CHILDREN(AssertionIDReference,saml1);
92 DECL_TYPED_CHILDREN(AssertionArtifact);
93 /** RequestType local name */
94 static const XMLCh TYPE_NAME[];
97 BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
98 DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
99 DECL_TYPED_CHILD(StatusCode);
100 /** StatusCodeType local name */
101 static const XMLCh TYPE_NAME[];
102 /** Success Status Code */
103 static xmltooling::QName SUCCESS;
104 /** Requester Error Status Code */
105 static xmltooling::QName REQUESTER;
106 /** Responder Error Status Code */
107 static xmltooling::QName RESPONDER;
108 /** Version Mismatch Error Status Code */
109 static xmltooling::QName VERSIONMISMATCH;
112 BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::XMLObject,SAML 1.x StatusDetail element);
113 DECL_XMLOBJECT_CHILDREN(Detail);
114 /** StatusDetailType local name */
115 static const XMLCh TYPE_NAME[];
118 BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
119 DECL_TYPED_CHILD(StatusCode);
120 DECL_TYPED_CHILD(StatusMessage);
121 DECL_TYPED_CHILD(StatusDetail);
122 /** StatusType local name */
123 static const XMLCh TYPE_NAME[];
126 BEGIN_XMLOBJECT(SAML_API,AbstractResponse,SignableObject,SAML 1.x ResponseAbstractType base type);
127 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
128 DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
129 DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
130 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
131 DECL_STRING_ATTRIB(Recipient,RECIPIENT);
132 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
135 BEGIN_XMLOBJECT(SAML_API,Response,AbstractResponse,SAML 1.x Response element);
136 DECL_TYPED_CHILD(Status);
137 DECL_TYPED_FOREIGN_CHILDREN(Assertion,saml1);
138 /** ResponseType local name */
139 static const XMLCh TYPE_NAME[];
142 DECL_SAML1POBJECTBUILDER(AssertionArtifact);
143 DECL_SAML1POBJECTBUILDER(AttributeQuery);
144 DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
145 DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
146 DECL_SAML1POBJECTBUILDER(Request);
147 DECL_SAML1POBJECTBUILDER(RespondWith);
148 DECL_SAML1POBJECTBUILDER(Response);
149 DECL_SAML1POBJECTBUILDER(Status);
150 DECL_SAML1POBJECTBUILDER(StatusCode);
151 DECL_SAML1POBJECTBUILDER(StatusDetail);
152 DECL_SAML1POBJECTBUILDER(StatusMessage);
155 * Registers builders and validators for Protocol classes into the runtime.
157 void SAML_API registerProtocolClasses();
161 #endif /* __saml1_protocols_h__ */