Change default mapper type to "Native".
[shibboleth/sp.git] / configs / shibboleth.xml.in
1 <SPConfig xmlns="urn:mace:shibboleth:target:config:1.0"
2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3     xsi:schemaLocation="urn:mace:shibboleth:target:config:1.0 @-PKGXMLDIR-@/shibboleth-targetconfig-1.0.xsd"
4         logger="@-PKGSYSCONFDIR-@/shibboleth.logger" clockSkew="180">
5
6         <!-- These extensions are "universal", loaded by all Shibboleth-aware processes. -->
7     <Extensions>
8         <Library path="@-LIBEXECDIR-@/xmlproviders.so" fatal="true"/>
9     </Extensions>
10
11         <!-- The Global section pertains to shared Shibboleth processes like the shibd daemon. -->
12     <Global logger="@-PKGSYSCONFDIR-@/shibd.logger">
13                 
14                 <!--
15         <Extensions>
16             <Library path="@-LIBEXECDIR-@/shib-mysql-ccache.so" fatal="false"/>
17         </Extensions>
18         -->
19     
20         <!-- Only one listener can be defined. -->
21         <UnixListener address="@-VARRUNDIR-@/shib-shar.sock"/>
22
23         <!-- <TCPListener address="127.0.0.1" port="12345" acl="127.0.0.1"/> -->
24         
25         <!--
26         See deploy guide for details, but:
27                 cacheTimeout - how long before expired sessions are purged from the cache
28                 AATimeout - how long to wait for an AA to respond
29                 AAConnectTimeout - how long to wait while connecting to an AA
30                 defaultLifetime - if attributes come back without guidance, how long should they last?
31                 strictValidity - if we have expired attrs, and can't get new ones, keep using them?
32                 propagateErrors - suppress errors while getting attrs or let user see them?
33                 retryInterval - if propagateErrors is false and query fails, how long to wait before trying again
34         Only one session cache can be defined.
35         -->
36         <MemorySessionCache cleanupInterval="300" cacheTimeout="3600" AATimeout="30" AAConnectTimeout="15"
37             defaultLifetime="1800" retryInterval="300" strictValidity="false" propagateErrors="true"/>
38         <!--
39         <MySQLSessionCache cleanupInterval="300" cacheTimeout="3600" AATimeout="30" AAConnectTimeout="15"
40                defaultLifetime="1800" retryInterval="300" strictValidity="false" propagateErrors="true"
41                mysqlTimeout="14400" storeAttributes="false">
42             <Argument>&#x2D;&#x2D;language=@-PREFIX-@/share/english</Argument>
43             <Argument>&#x2D;&#x2D;datadir=@-PREFIX-@/data</Argument>
44         </MySQLSessionCache>
45         -->
46         
47         <!-- Default replay cache is in-memory. -->
48         <!--
49         <MySQLReplayCache>
50             <Argument>&#x2D;&#x2D;language=@-PREFIX-@/share/english</Argument>
51             <Argument>&#x2D;&#x2D;datadir=@-PREFIX-@/data</Argument>
52         </MySQLReplayCache>
53         -->
54     </Global>
55     
56         <!-- The Local section pertains to resource-serving processes (often process pools) like web servers. -->
57     <Local logger="@-PKGSYSCONFDIR-@/httpd.logger" localRelayState="true">
58         <!--
59         To customize behavior, map hostnames and path components to applicationId and other settings.
60         The following provider types are available with the delivered code:
61                 type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider"
62                         - Web-server-specific plugin that allows native commands (like Apache's
63                                 ShibRequireSession) to override or supplement the XML syntax. The Apache
64                                 version also supplies an htaccess authz plugin for all content.
65
66                 type="edu.internet2.middleware.shibboleth.sp.provider.XMLRequestMapProvider"
67                         - portable plugin that does not support the older Apache-specific commands and works
68                                 the same on all web platforms, this plugin does NOT support htaccess files
69                                 for authz unless you also place an <htaccess/> element somewhere in the map
70
71                         By default, the "native" plugin (the first one above) is used, since it matches 1.2
72                         behavior on both Apache and IIS.
73         -->
74         <RequestMapProvider type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider">
75             <RequestMap applicationId="default">
76                 <!--
77                 This requires a session for documents in /secure on the containing host with http and
78                 https on the default ports. Note that the name and port in the <Host> elements MUST match
79                 Apache's ServerName and Port directives or the IIS Site name in the <ISAPI> element
80                 below.
81                 -->
82                 <Host name="sp.example.org">
83                     <Path name="secure" authType="shibboleth" requireSession="true" exportAssertion="true">
84                         <!-- Example shows a subfolder on the SSL port assigned to a separate <Application> -->
85                             <Path name="admin" applicationId="foo-admin"/>
86                         </Path>
87                 </Host>
88             </RequestMap>
89         </RequestMapProvider>
90         
91         <Implementation>
92             <ISAPI normalizeRequest="true">
93                 <!--
94                 Maps IIS Instance ID values to the host scheme/name/port/sslport. The name is
95                 required so that the proper <Host> in the request map above is found without
96                 having to cover every possible DNS/IP combination the user might enter.
97                 The port and scheme can usually be omitted, so the HTTP request's port and
98                 scheme will be used.
99                 
100                 <Alias> elements can specify alternate permissible client-specified server names.
101                 If a client request uses such a name, normalized redirects will use it, but the
102                 request map processing is still based on the default name attribute for the
103                 site. This reduces duplicate data entry in the request map for every legal
104                 hostname a site might permit. In the example below, only sp.example.org needs a
105                 <Host> element in the map, but spalso.example.org could be used by a client
106                 and those requests will map to sp.example.org for configuration settings.
107                 -->
108                 <Site id="1" name="sp.example.org">
109                         <Alias>spalso.example.org</Alias>
110                 </Site>
111             </ISAPI>
112         </Implementation>
113     </Local>
114
115         <!--
116         The Applications section is where most of Shibboleth's SAML bits are defined.
117         Resource requests are mapped in the Local section into an applicationId that
118         points into to this section.
119         -->
120     <Applications id="default" providerId="https://sp.example.org/shibboleth"
121         homeURL="https://sp.example.org/index.html"
122         xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
123         xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
124
125         <!--
126         Controls session lifetimes, address checks, cookie handling, and the protocol handlers.
127         You MUST supply an effectively unique handlerURL value for each of your applications.
128         The value can be a relative path, a URL with no hostname (https:///path) or a full URL.
129                 The system can compute a relative value based on the virtual host. Using handlerSSL="true"
130                 will force the protocol to be https. You should also add a cookieProps setting of "; secure"
131                 in that case.
132         -->
133         <Sessions lifetime="7200" timeout="3600" checkAddress="true"
134             handlerURL="/Shibboleth.sso" handlerSSL="false" idpHistory="true" idpHistoryDays="7">
135             
136             <!--
137             SessionInitiators handle session requests and relay them to a WAYF or directly
138             to an IdP, if possible. Automatic session setup will use the default or first
139             element (or requestSessionWith can specify a specific id to use). Lazy sessions
140             can be started with any initiator. The only Binding supported is the
141             "urn:mace:shibboleth:sp:1.3:SessionInit" lazy session profile.
142             -->
143             <SessionInitiator isDefault="true" id="IQ" Location="/WAYF/InQueue"
144                 Binding="urn:mace:shibboleth:sp:1.3:SessionInit"
145                 wayfURL="https://wayf.internet2.edu/InQueue/WAYF"
146                 wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"/>
147                         
148             <!--
149             md:AssertionConsumerService elements replace the old shireURL function with an
150             explicit handler for particular profiles, such as SAML 1.1 POST or Artifact.
151             The isDefault and index attributes are used when sessions are initiated
152             to determine how to communicate where the IdP should return the response.
153             -->
154                         <md:AssertionConsumerService Location="/SAML/POST" isDefault="true" index="1"
155                                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"/>
156                         <md:AssertionConsumerService Location="/SAML/Artifact" index="2"
157                                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"/>
158             
159             <!--
160             md:SingleLogoutService elements are mostly a placeholder for 2.0, but a simple
161             cookie-clearing option with a ResponseLocation or a return URL parameter is
162             supported via the "urn:mace:shibboleth:sp:1.3:Logout" Binding value.
163             -->
164                         <md:SingleLogoutService Location="/Logout" Binding="urn:mace:shibboleth:sp:1.3:Logout"/>
165             
166         </Sessions>
167
168         <!--
169         You should customize these pages! You can add attributes with values that can be plugged
170         into your templates. You can remove the access attribute to cause the module to return a
171         standard 403 Forbidden error code if authorization fails, and then customize that condition
172         using your web server.
173         -->
174         <Errors session="@-PKGSYSCONFDIR-@/sessionError.html"
175                 metadata="@-PKGSYSCONFDIR-@/metadataError.html"
176             rm="@-PKGSYSCONFDIR-@/rmError.html"
177             access="@-PKGSYSCONFDIR-@/accessError.html"
178             supportContact="root@localhost"
179             logoLocation="/shibtarget/logo.jpg"
180             styleSheet="/shibtarget/main.css"/>
181
182                 <!-- Indicates what credentials to use when communicating -->
183         <CredentialUse TLS="defcreds" Signing="defcreds">
184             <!-- RelyingParty elements customize credentials for specific IdPs or federations -->
185             <!--
186             <RelyingParty Name="urn:mace:inqueue" TLS="inqueuecreds" Signing="inqueuecreds"/>
187             -->
188         </CredentialUse>
189             
190         <!-- Use designators to request specific attributes or none to ask for all -->
191         <!--
192         <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonScopedAffiliation"
193             AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
194         <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonTargetedID"
195             AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
196         -->
197
198         <!-- AAP can be inline or in a separate file -->
199         <AAPProvider type="edu.internet2.middleware.shibboleth.aap.provider.XMLAAP" uri="@-PKGSYSCONFDIR-@/AAP.xml"/>
200         
201         <!-- Operational config consists of metadata and trust providers. Can be external or inline. -->
202
203         <!-- Dummy metadata for private testing, delete when deploying. -->
204                 <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata">
205                         <EntityDescriptor entityID="https://example.org/shibboleth" xmlns="urn:oasis:names:tc:SAML:2.0:metadata">
206                                 <IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol urn:mace:shibboleth:1.0">
207                                         <Extensions>
208                                         <shib:Scope xmlns:shib="urn:mace:shibboleth:metadata:1.0">example.org</shib:Scope>
209                                         </Extensions>
210                                         <KeyDescriptor use="signing">
211                                             <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
212                                                 <ds:KeyName>idp.example.org</ds:KeyName>
213                                             </ds:KeyInfo>
214                                         </KeyDescriptor>
215                                         <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
216                                         <SingleSignOnService Binding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"
217                                             Location="https://idp.example.org/shibboleth/HS"/>
218                                 </IDPSSODescriptor>
219                                 <AttributeAuthorityDescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol">
220                                         <Extensions>
221                                         <shib:Scope xmlns:shib="urn:mace:shibboleth:metadata:1.0">example.org</shib:Scope>
222                                         </Extensions>
223                                         <KeyDescriptor>
224                                             <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
225                                                 <ds:KeyName>idp.example.org</ds:KeyName>
226                                             </ds:KeyInfo>
227                                         </KeyDescriptor>
228                                         <AttributeService Binding="urn:oasis:names:tc:SAML:1.0:bindings:SOAP-binding"
229                                             Location="https://idp.example.org/shibboleth/AA"/>
230                                         <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat>
231                                 </AttributeAuthorityDescriptor>
232                         </EntityDescriptor>
233                 </MetadataProvider>
234
235                 <!-- InQueue pilot federation, delete for production deployments. -->
236         <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata"
237             uri="@-PKGSYSCONFDIR-@/IQ-sites.xml"/>
238                 
239                 <!-- The standard trust provider supports SAMLv2 metadata with path validation extensions. -->
240         <TrustProvider type="edu.internet2.middleware.shibboleth.common.provider.ShibbolethTrust"/>
241                     
242         <!-- zero or more SAML Audience condition matches (mainly Shib 1.1 compatibility) -->
243         <saml:Audience>urn:mace:inqueue</saml:Audience>
244         
245         <!--
246         You can customize behavior of specific applications here. The default elements inside the
247         outer <Applications> element generally have to be overridden in an all or nothing fashion.
248         That is, if you supply a <Sessions> or <Errors> override, you MUST include all attributes
249         you want to apply, as they will not be inherited. Similarly, if you specify an element such as
250         <MetadataProvider>, it is not additive with the defaults, but replaces them.
251         
252         Note that each application must have at least one assertion consumer service <Handler> that
253         maps uniquely to it and no other application in the <RequestMap>. Otherwise no sessions
254         will reach the application. If each application lives on its own vhost, then a single handler
255         at "/Shibboleth.sso/SAML" is sufficient, since the hostname will distinguish the application.
256         
257         The example below shows a special application that requires use of SSL when establishing
258         sessions, restricts the session cookie to SSL and a specific folder, and inherits most other
259         behavior except that it requests only EPPN from the origin instead of asking for all attributes.
260         -->
261         <!-- 
262         <Application id="foo-admin">
263                 <Sessions lifetime="7200" timeout="3600" checkAddress="true"
264                     shireURL="/secure/admin/Shibboleth.shire" shireSSL="true" cookieProps="; path=/secure/admin; secure"
265                     wayfURL="https://wayf.internet2.edu/InQueue/WAYF"/>
266             <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonPrincipalName"
267                 AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/> 
268         </Application>
269         -->
270
271     </Applications>
272     
273     <!-- Define all the private keys and certificates here that you reference from <CredentialUse>. -->
274     <CredentialsProvider type="edu.internet2.middleware.shibboleth.common.Credentials">
275         <Credentials xmlns="urn:mace:shibboleth:credentials:1.0">
276             <FileResolver Id="defcreds">
277                 <Key format="PEM">
278                     <Path>@-PKGSYSCONFDIR-@/example.key</Path>
279                 </Key>
280                 <Certificate format="PEM">
281                     <Path>@-PKGSYSCONFDIR-@/example.crt</Path>
282                 </Certificate>
283             </FileResolver>
284             
285             <!--
286             <FileResolver Id="inqueuecreds">
287                 <Key format="PEM" password="handsoff">
288                     <Path>@-PKGSYSCONFDIR-@/inqueue.key</Path>
289                 </Key>
290                 <Certificate format="PEM">
291                     <Path>@-PKGSYSCONFDIR-@/inqueue.crt</Path>
292                 </Certificate>
293             </FileResolver>
294             -->
295         </Credentials>
296     </CredentialsProvider>
297
298 </SPConfig>
299