a2e605271b41f06d993bb87f1a4cce43ebad1d6c
[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 OutOfProcess section pertains to components that rely on a single long-lived process. -->
12         <OutOfProcess 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                         writeThrough - tells database-backed caches that multiple web servers are sharing the database
35                 Only one session cache can be defined.
36                 -->
37                 <MemorySessionCache cleanupInterval="300" cacheTimeout="3600" AATimeout="30" AAConnectTimeout="15"
38                         defaultLifetime="1800" retryInterval="300" strictValidity="false" propagateErrors="false"/>
39                 <!--
40                 <ODBCSessionCache cleanupInterval="300" cacheTimeout="3600" AATimeout="30" AAConnectTimeout="15"
41                         defaultLifetime="1800" retryInterval="300" strictValidity="false" propagateErrors="false"
42                         odbcTimeout="7200" storeAttributes="true" writeThrough="true">
43                         <ConnectionString>
44                         DRIVER=drivername;SERVER=dbserver;UID=shibboleth;PWD=password;DATABASE=shibboleth;APP=Shibboleth
45                         </ConnectionString>
46                 </ODBCSessionCache>
47                 -->
48         
49                 <!-- Default replay cache is in-memory. -->
50                 <!--
51                 <ODBCReplayCache/>
52                 -->
53         </OutOfProcess>
54     
55         <!-- The InProcess section pertains to components that support transient process pools like most web servers. -->
56         <InProcess logger="@-PKGSYSCONFDIR-@/native.logger" localRelayState="true">
57                 <!--
58                 To customize behavior, map hostnames and path components to applicationId and other settings.
59                 The following provider types are available with the delivered code:
60                         type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider"
61                                 - Web-server-specific plugin that allows native commands (like Apache's
62                                         ShibRequireSession) to override or supplement the XML syntax. The Apache
63                                         version also supplies an htaccess authz plugin for all content.
64
65                         type="edu.internet2.middleware.shibboleth.sp.provider.XMLRequestMapProvider"
66                                 - portable plugin that does not support the older Apache-specific commands and works
67                                         the same on all web platforms, this plugin does NOT support htaccess files
68                                         for authz unless you also place an <htaccess/> element somewhere in the map
69
70                         By default, the "native" plugin (the first one above) is used, since it matches older
71                         behavior on both Apache and IIS.
72                 -->
73                 <RequestMapProvider type="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider">
74                         <RequestMap applicationId="default">
75                                 <!--
76                                 This requires a session for documents in /secure on the containing host with http and
77                                 https on the default ports. Note that the name and port in the <Host> elements MUST match
78                                 Apache's ServerName and Port directives or the IIS Site name in the <ISAPI> element
79                                 below.
80                                 -->
81                                 <Host name="sp.example.org">
82                                         <Path name="secure" authType="shibboleth" requireSession="true" exportAssertion="true">
83                                                 <!-- Example shows the folder "/secure/admin" assigned to a separate <Application> -->
84                                                 <!--
85                                                 <Path name="admin" applicationId="foo-admin"/>
86                                                 -->
87                                         </Path>
88                                 </Host>
89                         </RequestMap>
90                 </RequestMapProvider>
91                 
92                 <Implementation>
93                         <ISAPI normalizeRequest="true">
94                                 <!--
95                                 Maps IIS Instance ID values to the host scheme/name/port/sslport. The name is
96                                 required so that the proper <Host> in the request map above is found without
97                                 having to cover every possible DNS/IP combination the user might enter.
98                                 The port and scheme can usually be omitted, so the HTTP request's port and
99                                 scheme will be used.
100                                 
101                                 <Alias> elements can specify alternate permissible client-specified server names.
102                                 If a client request uses such a name, normalized redirects will use it, but the
103                                 request map processing is still based on the default name attribute for the
104                                 site. This reduces duplicate data entry in the request map for every legal
105                                 hostname a site might permit. In the example below, only sp.example.org needs a
106                                 <Host> element in the map, but spalias.example.org could be used by a client
107                                 and those requests will map to sp.example.org for configuration settings.
108                                 -->
109                                 <Site id="1" name="sp.example.org">
110                                         <Alias>spalias.example.org</Alias>
111                                 </Site>
112                         </ISAPI>
113                 </Implementation>
114         </InProcess>
115
116         <!--
117         The Applications section is where most of Shibboleth's SAML bits are defined.
118         Resource requests are mapped in the Local section into an applicationId that
119         points into to this section.
120         -->
121         <Applications id="default" providerId="https://sp.example.org/shibboleth"
122                 homeURL="https://sp.example.org/index.html"
123                 xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
124                 xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
125
126                 <!--
127                 Controls session lifetimes, address checks, cookie handling, and the protocol handlers.
128                 You MUST supply an effectively unique handlerURL value for each of your applications.
129                 The value can be a relative path, a URL with no hostname (https:///path) or a full URL.
130                 The system can compute a relative value based on the virtual host. Using handlerSSL="true"
131                 will force the protocol to be https. You should also add a cookieProps setting of "; path=/; secure"
132                 in that case. Note that while we default checkAddress to "false", this has a negative
133                 impact on the security of the SP. Stealing cookies/sessions is much easier with this
134                 disabled.
135                 -->
136                 <Sessions lifetime="7200" timeout="3600" checkAddress="false"
137                         handlerURL="/Shibboleth.sso" handlerSSL="false" idpHistory="true" idpHistoryDays="7">
138                         
139                         <!--
140                         SessionInitiators handle session requests and relay them to a WAYF or directly
141                         to an IdP, if possible. Automatic session setup will use the default or first
142                         element (or requireSessionWith can specify a specific id to use). Lazy sessions
143                         can be started with any initiator by redirecting to it. The only Binding supported
144                         is the "urn:mace:shibboleth:sp:1.3:SessionInit" lazy session profile using query
145                         string parameters:
146                          *  target      the resource to direct back to later (or homeURL will be used)
147                          *  acsIndex    optional index of an ACS to use on the way back in
148                          *  providerId  optional direct invocation of a specific IdP
149                         -->
150                         
151                         <!-- This default example directs users to a specific IdP's SSO service. -->
152                         <SessionInitiator isDefault="true" id="example" Location="/WAYF/idp.example.org"
153                                 Binding="urn:mace:shibboleth:sp:1.3:SessionInit"
154                                 wayfURL="https://idp.example.org/shibboleth-idp/SSO"
155                                 wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest"/>
156                                 
157                         <!--
158                         md:AssertionConsumerService elements replace the old shireURL function with an
159                         explicit handler for particular profiles, such as SAML 1.1 POST or Artifact.
160                         The isDefault and index attributes are used when sessions are initiated
161                         to determine how to tell the IdP where and how to return the response.
162                         -->
163                         <md:AssertionConsumerService Location="/SAML/POST" isDefault="true" index="1"
164                                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"/>
165                         <md:AssertionConsumerService Location="/SAML/Artifact" index="2"
166                                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"/>
167                         
168                         <!--
169                         md:SingleLogoutService elements are mostly a placeholder for 2.0, but a simple
170                         cookie-clearing option with a ResponseLocation or a return URL parameter is
171                         supported via the "urn:mace:shibboleth:sp:1.3:Logout" Binding value.
172                         -->
173                         <md:SingleLogoutService Location="/Logout" Binding="urn:mace:shibboleth:sp:1.3:Logout"/>
174
175                 </Sessions>
176
177                 <!--
178                 You should customize these pages! You can add attributes with values that can be plugged
179                 into your templates. You can remove the access attribute to cause the module to return a
180                 standard 403 Forbidden error code if authorization fails, and then customize that condition
181                 using your web server.
182                 -->
183                 <Errors session="@-PKGSYSCONFDIR-@/sessionError.html"
184                         metadata="@-PKGSYSCONFDIR-@/metadataError.html"
185                         rm="@-PKGSYSCONFDIR-@/rmError.html"
186                         access="@-PKGSYSCONFDIR-@/accessError.html"
187                         ssl="@-PKGSYSCONFDIR-@/sslError.html"
188                         supportContact="root@localhost"
189                         logoLocation="/shibboleth-sp/logo.jpg"
190                         styleSheet="/shibboleth-sp/main.css"/>
191
192                 <!-- Indicates what credentials to use when communicating -->
193                 <CredentialUse TLS="defcreds" Signing="defcreds"/>
194                         
195                 <!-- Use designators to request specific attributes or none to ask for all -->
196                 <!--
197                 <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonScopedAffiliation"
198                         AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
199                 -->
200
201                 <!-- AAP can be inline or in a separate file -->
202                 <AAPProvider type="edu.internet2.middleware.shibboleth.aap.provider.XMLAAP" uri="@-PKGSYSCONFDIR-@/AAP.xml"/>
203                 
204                 <!-- Operational config consists of metadata and trust providers. Can be external or inline. -->
205
206                 <!-- Dummy metadata for private testing, delete for production deployments. -->
207                 <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata"
208                         uri="@-PKGSYSCONFDIR-@/example-metadata.xml"/>
209
210                 <!-- The standard trust provider supports SAMLv2 metadata with path validation extensions. -->
211                 <TrustProvider type="edu.internet2.middleware.shibboleth.common.provider.ShibbolethTrust"/>
212                                         
213                 <!--
214                 You can customize behavior of specific applications here. The default elements inside the
215                 outer <Applications> element generally have to be overridden in an all or nothing fashion.
216                 That is, if you supply a <Sessions> or <Errors> override, you MUST include all attributes
217                 you want to apply, as they will not be inherited. Similarly, if you specify an element such as
218                 <MetadataProvider>, it is not additive with the defaults, but replaces them.
219                 
220                 Note that each application must have a handlerURL that maps uniquely to it and no other
221                 application in the <RequestMap>. Otherwise no sessions will reach the application.
222                 If each application lives on its own vhost, then a single handler at "/Shibboleth.sso"
223                 is sufficient, since the hostname will distinguish the application.
224                 
225                 The example below shows a special application that requires use of SSL when establishing
226                 sessions, restricts the session cookie to SSL and a specific folder, and inherits most other
227                 behavior except that it requests only EPPN from the origin instead of asking for all attributes.
228                 Note that it will inherit all of the handler endpoints defined for the default application
229                 but will append them to the handlerURL defined here.
230                 -->
231                 <!-- 
232                 <Application id="foo-admin">
233                         <Sessions lifetime="7200" timeout="3600" checkAddress="true"
234                                 handlerURL="/secure/admin/Shibboleth.sso" handlerSSL="true"
235                                 cookieProps="; path=/secure/admin; secure"/>
236                         <saml:AttributeDesignator AttributeName="urn:mace:dir:attribute-def:eduPersonPrincipalName"
237                                 AttributeNamespace="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
238                 </Application>
239                 -->
240
241         </Applications>
242         
243         <!-- Define all the private keys and certificates here that you reference from <CredentialUse>. -->
244         <CredentialsProvider type="edu.internet2.middleware.shibboleth.common.Credentials">
245                 <Credentials>
246                         <FileResolver Id="defcreds">
247                                 <Key>
248                                         <Path>@-PKGSYSCONFDIR-@/sp-example.key</Path>
249                                 </Key>
250                                 <Certificate>
251                                         <Path>@-PKGSYSCONFDIR-@/sp-example.crt</Path>
252                                 </Certificate>
253                         </FileResolver>
254                 </Credentials>
255         </CredentialsProvider>
256
257         <!-- Specialized attribute handling for cases with complex syntax. -->
258         <AttributeFactory AttributeName="urn:oid:1.3.6.1.4.1.5923.1.1.1.10"
259                 type="edu.internet2.middleware.shibboleth.common.provider.TargetedIDFactory"/>
260
261 </SPConfig>
262