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 DECL_XMLOBJECT_SIMPLE(SAML_API,AssertionArtifact,Artifact,SAML 1.x AssertionArtifact element);
36 DECL_XMLOBJECT_SIMPLE(SAML_API,StatusMessage,Message,SAML 1.x StatusMessage element);
38 BEGIN_XMLOBJECT(SAML_API,RespondWith,xmltooling::XMLObject,SAML 1.x RespondWith element);
39 /** Gets the QName content of the element. */
40 virtual xmltooling::QName* getQName() const=0;
41 /** Sets the QName content of the element. */
42 virtual void setQName(const xmltooling::QName* qname)=0;
45 BEGIN_XMLOBJECT(SAML_API,Query,xmltooling::XMLObject,SAML 1.x Query element);
48 BEGIN_XMLOBJECT(SAML_API,SubjectQuery,Query,SAML 1.x SubjectQuery element);
49 DECL_TYPED_CHILD(Subject);
52 BEGIN_XMLOBJECT(SAML_API,AuthenticationQuery,SubjectQuery,SAML 1.x AuthenticationQuery element);
53 DECL_STRING_ATTRIB(AuthenticationMethod,AUTHENTICATIONMETHOD);
54 /** AuthenticationQueryType local name */
55 static const XMLCh TYPE_NAME[];
58 BEGIN_XMLOBJECT(SAML_API,AttributeQuery,SubjectQuery,SAML 1.x AttributeQuery element);
59 DECL_STRING_ATTRIB(Resource,RESOURCE);
60 DECL_TYPED_CHILDREN(AttributeDesignator);
61 /** AttributeQueryType local name */
62 static const XMLCh TYPE_NAME[];
65 BEGIN_XMLOBJECT(SAML_API,AuthorizationDecisionQuery,SubjectQuery,SAML 1.x AuthorizationDecisionQuery element);
66 DECL_STRING_ATTRIB(Resource,RESOURCE);
67 DECL_TYPED_CHILDREN(Action);
68 DECL_TYPED_CHILD(Evidence);
69 /** AuthorizationDecisionQueryType local name */
70 static const XMLCh TYPE_NAME[];
73 BEGIN_XMLOBJECT(SAML_API,AbstractRequest,SignableObject,SAML 1.x RequestAbstractType base type);
74 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
75 DECL_STRING_ATTRIB(RequestID,REQUESTID);
76 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
77 DECL_TYPED_CHILDREN(RespondWith);
78 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
81 BEGIN_XMLOBJECT(SAML_API,Request,AbstractRequest,SAML 1.x Request element);
82 DECL_TYPED_CHILD(Query);
83 DECL_TYPED_CHILD(SubjectQuery);
84 DECL_TYPED_CHILD(AuthenticationQuery);
85 DECL_TYPED_CHILD(AttributeQuery);
86 DECL_TYPED_CHILD(AuthorizationDecisionQuery);
87 DECL_TYPED_CHILDREN(AssertionIDReference);
88 DECL_TYPED_CHILDREN(AssertionArtifact);
89 /** RequestType local name */
90 static const XMLCh TYPE_NAME[];
93 BEGIN_XMLOBJECT(SAML_API,StatusCode,xmltooling::XMLObject,SAML 1.x StatusCode element);
94 DECL_XMLOBJECT_ATTRIB(Value,VALUE,xmltooling::QName);
95 DECL_TYPED_CHILD(StatusCode);
96 /** StatusCodeType local name */
97 static const XMLCh TYPE_NAME[];
98 /** Success Status Code */
99 static xmltooling::QName SUCCESS;
100 /** Requester Error Status Code */
101 static xmltooling::QName REQUESTER;
102 /** Responder Error Status Code */
103 static xmltooling::QName RESPONDER;
104 /** Version Mismatch Error Status Code */
105 static xmltooling::QName VERSIONMISMATCH;
108 BEGIN_XMLOBJECT(SAML_API,StatusDetail,xmltooling::XMLObject,SAML 1.x StatusDetail element);
109 DECL_XMLOBJECT_CHILDREN(Detail);
110 /** StatusDetailType local name */
111 static const XMLCh TYPE_NAME[];
114 BEGIN_XMLOBJECT(SAML_API,Status,xmltooling::XMLObject,SAML 1.x Status element);
115 DECL_TYPED_CHILD(StatusCode);
116 DECL_TYPED_CHILD(StatusMessage);
117 DECL_TYPED_CHILD(StatusDetail);
118 /** StatusType local name */
119 static const XMLCh TYPE_NAME[];
122 BEGIN_XMLOBJECT(SAML_API,AbstractResponse,SignableObject,SAML 1.x ResponseAbstractType base type);
123 DECL_INTEGER_ATTRIB(MinorVersion,MINORVERSION);
124 DECL_STRING_ATTRIB(ResponseID,RESPONSEID);
125 DECL_STRING_ATTRIB(InResponseTo,INRESPONSETO);
126 DECL_DATETIME_ATTRIB(IssueInstant,ISSUEINSTANT);
127 DECL_STRING_ATTRIB(Recipient,RECIPIENT);
128 DECL_TYPED_FOREIGN_CHILD(Signature,xmlsignature);
131 BEGIN_XMLOBJECT(SAML_API,Response,AbstractResponse,SAML 1.x Response element);
132 DECL_TYPED_CHILD(Status);
133 DECL_TYPED_CHILDREN(Assertion);
134 /** ResponseType local name */
135 static const XMLCh TYPE_NAME[];
138 DECL_SAML1POBJECTBUILDER(AssertionArtifact);
139 DECL_SAML1POBJECTBUILDER(AttributeQuery);
140 DECL_SAML1POBJECTBUILDER(AuthenticationQuery);
141 DECL_SAML1POBJECTBUILDER(AuthorizationDecisionQuery);
142 DECL_SAML1POBJECTBUILDER(Request);
143 DECL_SAML1POBJECTBUILDER(RespondWith);
144 DECL_SAML1POBJECTBUILDER(Response);
145 DECL_SAML1POBJECTBUILDER(Status);
146 DECL_SAML1POBJECTBUILDER(StatusCode);
147 DECL_SAML1POBJECTBUILDER(StatusDetail);
148 DECL_SAML1POBJECTBUILDER(StatusMessage);
151 * Registers builders and validators for Protocol classes into the runtime.
153 void SAML_API registerProtocolClasses();
157 #endif /* __saml1_protocols_h__ */