HostRegex and PathRegex support in request map.
[shibboleth/sp.git] / schemas / shibboleth-2.0-native-sp-config.xsd
index 8073aff..05ffd7e 100644 (file)
        <simpleType name="listOfURIs">\r
                <list itemType="anyURI"/>\r
        </simpleType>\r
+\r
+       <simpleType name="bindingBoolean">\r
+               <restriction base="string">\r
+                       <enumeration value="true"/>\r
+                       <enumeration value="false"/>\r
+                       <enumeration value="front"/>\r
+                       <enumeration value="back"/>\r
+               </restriction>\r
+       </simpleType>\r
        \r
        <complexType name="PluggableType">\r
                <sequence>\r
                                        <element ref="conf:AccessControl"/>\r
                        <element ref="conf:AccessControlProvider"/>\r
                    </choice>\r
-                <element ref="conf:Host" minOccurs="0" maxOccurs="unbounded"/>\r
+               <choice minOccurs="0" maxOccurs="unbounded">\r
+                                       <element ref="conf:Host"/>\r
+                       <element ref="conf:HostRegex"/>\r
+               </choice>\r
             </sequence>\r
             <attribute name="applicationId" type="conf:string" fixed="default"/>\r
                <attributeGroup ref="conf:ContentSettings"/>\r
                                        <element ref="conf:AccessControl"/>\r
                        <element ref="conf:AccessControlProvider"/>\r
                    </choice>\r
-                       <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <choice minOccurs="0" maxOccurs="unbounded">\r
+                               <element ref="conf:Path"/>\r
+                               <element ref="conf:PathRegex"/>\r
+                       </choice>\r
                </sequence>\r
                <attribute name="scheme">\r
                            <simpleType>\r
                </attribute>\r
                <attribute name="name" type="conf:string" use="required"/>\r
                <attribute name="port" type="unsignedInt"/>\r
-               <attribute name="applicationId" type="conf:string"/>\r
+                       <attribute name="applicationId" type="conf:string"/>\r
                <attributeGroup ref="conf:ContentSettings"/>\r
        </complexType>\r
     </element>\r
+       \r
+       <element name="HostRegex">\r
+               <complexType>\r
+                       <sequence>\r
+                               <choice minOccurs="0">\r
+                                       <element ref="conf:htaccess"/>\r
+                                       <element ref="conf:AccessControl"/>\r
+                                       <element ref="conf:AccessControlProvider"/>\r
+                               </choice>\r
+                               <choice minOccurs="0" maxOccurs="unbounded">\r
+                                       <element ref="conf:Path"/>\r
+                                       <element ref="conf:PathRegex"/>\r
+                               </choice>\r
+                       </sequence>\r
+                       <attribute name="regex" type="conf:string" use="required"/>\r
+                       <attribute name="ignoreCase" type="boolean" default="true"/>\r
+                       <attribute name="applicationId" type="conf:string"/>\r
+                       <attributeGroup ref="conf:ContentSettings"/>\r
+               </complexType>\r
+       </element>\r
 \r
     <element name="Path">\r
         <complexType>\r
                                        <element ref="conf:AccessControl"/>\r
                        <element ref="conf:AccessControlProvider"/>\r
                    </choice>\r
-                       <element ref="conf:Path" minOccurs="0" maxOccurs="unbounded"/>\r
+                       <choice minOccurs="0" maxOccurs="unbounded">\r
+                               <element ref="conf:Path"/>\r
+                               <element ref="conf:PathRegex"/>\r
+                       </choice>\r
                </sequence>\r
-               <attribute name="name" type="conf:string" use="required"/>\r
-               <attribute name="applicationId" type="conf:string"/>\r
-               <attributeGroup ref="conf:ContentSettings"/>\r
+                       <attribute name="name" type="conf:string" use="required"/>\r
+                       <attribute name="applicationId" type="conf:string"/>\r
+                       <attributeGroup ref="conf:ContentSettings"/>\r
         </complexType>\r
     </element>\r
+\r
+       <element name="PathRegex">\r
+               <complexType>\r
+                       <sequence>\r
+                               <choice minOccurs="0">\r
+                                       <element ref="conf:htaccess"/>\r
+                                       <element ref="conf:AccessControl"/>\r
+                                       <element ref="conf:AccessControlProvider"/>\r
+                               </choice>\r
+                       </sequence>\r
+                       <attribute name="regex" type="conf:string" use="required"/>\r
+                       <attribute name="ignoreCase" type="boolean" default="true"/>\r
+                       <attribute name="applicationId" type="conf:string"/>\r
+                       <attributeGroup ref="conf:ContentSettings"/>\r
+               </complexType>\r
+       </element>\r
        \r
        <element name="Applications">\r
                <annotation>\r
                <complexType>\r
                        <sequence>\r
                                <element ref="conf:Sessions"/>\r
-                               <element ref="conf:Errors"/>\r
+                               <element ref="conf:Errors" minOccurs="0"/>\r
                                <element ref="conf:DefaultRelyingParty"/>\r
+                               <element ref="conf:Notify" minOccurs="0" maxOccurs="unbounded"/>\r
                                <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>\r
                 <element name="MetadataProvider" type="conf:PluggableType"/>\r
                                <element name="TrustEngine" type="conf:PluggableType"/>\r
                        <attribute name="id" type="conf:string" fixed="default"/>\r
                        <attribute name="entityID" type="anyURI" use="required"/>\r
                        <attribute name="policyId" type="conf:string" use="required"/>\r
-                       <attribute name="homeURL" type="anyURI" default="/"/>\r
-                       <attribute name="REMOTE_USER" type="conf:listOfStrings"/>\r
-                       <attribute name="unsetHeaders" type="conf:listOfStrings"/>\r
-               <anyAttribute namespace="##other" processContents="lax"/>\r
+                       <attributeGroup ref="conf:ApplicationGroup"/>\r
+                       <anyAttribute namespace="##other" processContents="lax"/>\r
                </complexType>\r
        </element>\r
        \r
                                <element ref="conf:Sessions" minOccurs="0"/>\r
                                <element ref="conf:Errors" minOccurs="0"/>\r
                                <element ref="conf:DefaultRelyingParty" minOccurs="0"/>\r
+                               <element ref="conf:Notify" minOccurs="0" maxOccurs="unbounded"/>\r
                                <element ref="saml:Audience" minOccurs="0" maxOccurs="unbounded"/>\r
                                <element name="MetadataProvider" type="conf:PluggableType" minOccurs="0"/>\r
                                <element name="TrustEngine" type="conf:PluggableType" minOccurs="0"/>\r
                        <attribute name="id" type="conf:string" use="required"/>\r
                        <attribute name="entityID" type="anyURI"/>\r
                        <attribute name="policyId" type="conf:string"/>\r
-                       <attribute name="homeURL" type="anyURI" default="/"/>\r
-                       <attribute name="REMOTE_USER" type="conf:listOfStrings"/>\r
-                       <attribute name="unsetHeaders" type="conf:listOfStrings"/>\r
+                       <attributeGroup ref="conf:ApplicationGroup"/>\r
                        <anyAttribute namespace="##other" processContents="lax"/>\r
                </complexType>\r
        </element>\r
 \r
+       <attributeGroup name="ApplicationGroup">\r
+               <attribute name="homeURL" type="anyURI" default="/"/>\r
+               <attribute name="REMOTE_USER" type="conf:listOfStrings"/>\r
+               <attribute name="unsetHeaders" type="conf:listOfStrings"/>\r
+               <attribute name="redirectErrors" type="anyURI"/>\r
+               <attribute name="localLogout" type="anyURI"/>\r
+               <attribute name="globalLogout" type="anyURI"/>\r
+       </attributeGroup>\r
+               \r
        <element name="Sessions">\r
                <annotation>\r
                        <documentation>Container for specifying protocol handlers and session policy</documentation>\r
                <complexType>\r
                        <choice minOccurs="0" maxOccurs="unbounded">\r
                                <element ref="conf:SessionInitiator"/>\r
+                               <element ref="conf:LogoutInitiator"/>\r
                                <element ref="md:AssertionConsumerService"/>\r
                                <element ref="md:ArtifactResolutionService"/>\r
                                <element ref="md:SingleLogoutService"/>\r
                        <attribute name="handlerSSL" type="boolean" default="true"/>\r
                        <attribute name="exportLocation" type="conf:string"/>\r
                        <attribute name="exportACL" type="conf:listOfStrings" default="127.0.0.1"/>\r
-                       <attribute name="redirectErrors" type="anyURI"/>\r
                        <attribute name="cookieName" type="conf:string"/>\r
                        <attribute name="cookieProps" type="conf:string"/>\r
                        <attribute name="idpHistory" type="boolean" default="true"/>\r
                        <anyAttribute namespace="##other" processContents="lax"/>\r
                </complexType>\r
        </element>\r
-       \r
+\r
        <attribute name="policyId" type="conf:string">\r
                <annotation>\r
                        <documentation>Used to reference Policy elements from profile endpoints.</documentation>\r
                        </complexContent>\r
                </complexType>\r
        </element>\r
+\r
+       <element name="LogoutInitiator">\r
+               <annotation>\r
+                       <documentation>Used to specify handlers that can issue LogoutRequests</documentation>\r
+               </annotation>\r
+               <complexType>\r
+                       <complexContent>\r
+                               <restriction base="conf:PluggableType">\r
+                                       <sequence>\r
+                                               <any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>\r
+                                       </sequence>\r
+                                       <attribute name="Location" type="anyURI"/>\r
+                                       <attribute name="outgoingBindings" type="conf:listOfURIs"/>\r
+                                       <attribute name="template" type="anyURI"/>\r
+                                       <attribute name="postArtifact" type="boolean"/>\r
+                                       <anyAttribute namespace="##any" processContents="lax"/>\r
+                               </restriction>\r
+                       </complexContent>\r
+               </complexType>\r
+       </element>\r
        \r
        <element name="Errors">\r
                <annotation>\r
                </complexType>\r
        </element>\r
 \r
+       <element name="Notify">\r
+               <annotation>\r
+                       <documentation>Used to specify locations to receive application notifications</documentation>\r
+               </annotation>\r
+               <complexType>\r
+                       <sequence/>\r
+                       <attribute name="Channel" use="required">\r
+                               <simpleType>\r
+                                       <restriction base="string">\r
+                                               <enumeration value="front"/>\r
+                                               <enumeration value="back"/>\r
+                                       </restriction>\r
+                               </simpleType>\r
+                       </attribute>\r
+                       <attribute name="Location" type="anyURI" use="required"/>\r
+                       <anyAttribute namespace="##any" processContents="lax"/>\r
+               </complexType>\r
+       </element>\r
+       \r
        <element name="DefaultRelyingParty">\r
                <annotation>\r
                        <documentation>Container for specifying security methods to use with particular peers</documentation>\r
                <attribute name="authType" type="conf:string"/>\r
                <attribute name="authUsername" type="conf:string"/>\r
                <attribute name="authPassword" type="conf:string"/>\r
-               <attribute name="signRequests" type="boolean"/>\r
-               <attribute name="signResponses" type="boolean"/>\r
+               <attribute name="signRequests" type="conf:bindingBoolean"/>\r
+               <attribute name="signResponses" type="conf:bindingBoolean"/>\r
                <attribute name="signatureAlg" type="anyURI"/>\r
                <attribute name="digestAlg" type="anyURI"/>\r
-               <attribute name="encryptRequests" type="boolean"/>\r
-               <attribute name="encryptResponses" type="boolean"/>\r
+               <attribute name="encryptRequests" type="conf:bindingBoolean"/>\r
+               <attribute name="encryptResponses" type="conf:bindingBoolean"/>\r
                <attribute name="encryptionAlg" type="anyURI"/>\r
                <attribute name="keyName" type="conf:string"/>\r
                <attribute name="artifactEndpointIndex" type="unsignedShort"/>\r