Imported Upstream version 2.3.1+dfsg
[shibboleth/sp.git] / configs / shibboleth2.xml
1 <SPConfig xmlns="urn:mace:shibboleth:2.0:native:sp:config"
2     xmlns:conf="urn:mace:shibboleth:2.0:native:sp:config"
3     xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
4     xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"    
5     xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
6     logger="syslog.logger" clockSkew="180">
7
8     <!-- The OutOfProcess section contains properties affecting the shibd daemon. -->
9     <OutOfProcess logger="shibd.logger">
10         <!--
11         <Extensions>
12             <Library path="odbc-store.so" fatal="true"/>
13         </Extensions>
14         -->
15     </OutOfProcess>
16     
17     <!-- The InProcess section conrains settings affecting web server modules/filters. -->
18     <InProcess logger="native.logger">
19         <ISAPI normalizeRequest="true" safeHeaderNames="true">
20             <!--
21             Maps IIS Instance ID values to the host scheme/name/port. The name is
22             required so that the proper <Host> in the request map above is found without
23             having to cover every possible DNS/IP combination the user might enter.
24             -->
25             <Site id="1" name="sp.example.org"/>
26             <!--
27             When the port and scheme are omitted, the HTTP request's port and scheme are used.
28             If these are wrong because of virtualization, they can be explicitly set here to
29             ensure proper redirect generation.
30             -->
31             <!--
32             <Site id="42" name="virtual.example.org" scheme="https" port="443"/>
33             -->
34         </ISAPI>
35     </InProcess>
36
37     <!-- Only one listener can be defined, to connect in-process modules to shibd. -->
38     <UnixListener address="shibd.sock"/>
39     <!-- <TCPListener address="127.0.0.1" port="12345" acl="127.0.0.1"/> -->
40     
41     <!-- This set of components stores sessions and other persistent data in daemon memory. -->
42     <StorageService type="Memory" id="mem" cleanupInterval="900"/>
43     <SessionCache type="StorageService" StorageService="mem" cacheTimeout="3600" inprocTimeout="900" cleanupInterval="900"/>
44     <ReplayCache StorageService="mem"/>
45     <ArtifactMap artifactTTL="180"/>
46
47     <!-- This set of components stores sessions and other persistent data in an ODBC database. -->
48     <!--
49     <StorageService type="ODBC" id="db" cleanupInterval="900">
50         <ConnectionString>
51         DRIVER=drivername;SERVER=dbserver;UID=shibboleth;PWD=password;DATABASE=shibboleth;APP=Shibboleth
52         </ConnectionString>
53     </StorageService>
54     <SessionCache type="StorageService" StorageService="db" cacheTimeout="3600" inprocTimeout="900" cleanupInterval="900"/>
55     <ReplayCache StorageService="db"/>
56     <ArtifactMap StorageService="db" artifactTTL="180"/>
57     -->
58
59     <!-- To customize behavior, map hostnames and path components to applicationId and other settings. -->
60     <RequestMapper type="Native">
61         <RequestMap applicationId="default">
62             <!--
63             The example requires a session for documents in /secure on the containing host with http and
64             https on the default ports. Note that the name and port in the <Host> elements MUST match
65             Apache's ServerName and Port directives or the IIS Site name in the <ISAPI> element
66             below.
67             -->
68             <Host name="sp.example.org">
69                 <Path name="secure" authType="shibboleth" requireSession="true"/>
70             </Host>
71             <!-- Example of a second vhost mapped to a different applicationId. -->
72             <!--
73             <Host name="admin.example.org" applicationId="admin" authType="shibboleth" requireSession="true"/>
74             -->
75         </RequestMap>
76     </RequestMapper>
77
78     <!--
79     The ApplicationDefaults element is where most of Shibboleth's SAML bits are defined.
80     Resource requests are mapped by the RequestMapper to an applicationId that
81     points into to this section.
82     -->
83     <ApplicationDefaults id="default" policyId="default"
84         entityID="https://sp.example.org/shibboleth"
85         REMOTE_USER="eppn persistent-id targeted-id"
86         signing="false" encryption="false">
87
88         <!--
89         Controls session lifetimes, address checks, cookie handling, and the protocol handlers.
90         You MUST supply an effectively unique handlerURL value for each of your applications.
91         The value can be a relative path, a URL with no hostname (https:///path) or a full URL.
92         The system can compute a relative value based on the virtual host. Using handlerSSL="true"
93         will force the protocol to be https. You should also add a cookieProps setting of "; path=/; secure"
94         in that case. Note that while we default checkAddress to "false", this has a negative
95         impact on the security of the SP. Stealing cookies/sessions is much easier with this disabled.
96         -->
97         <Sessions lifetime="28800" timeout="3600" checkAddress="false"
98             handlerURL="/Shibboleth.sso" handlerSSL="false"
99             exportLocation="http://localhost/Shibboleth.sso/GetAssertion" exportACL="127.0.0.1"
100             idpHistory="false" idpHistoryDays="7">
101             
102             <!--
103             SessionInitiators handle session requests and relay them to a Discovery page,
104             or to an IdP if possible. Automatic session setup will use the default or first
105             element (or requireSessionWith can specify a specific id to use).
106             -->
107
108             <!-- Default example directs to a specific IdP's SSO service (favoring SAML 2 over Shib 1). -->
109             <SessionInitiator type="Chaining" Location="/Login" isDefault="true" id="Intranet"
110                     relayState="cookie" entityID="https://idp.example.org/shibboleth">
111                 <SessionInitiator type="SAML2" acsIndex="1" template="bindingTemplate.html"/>
112                 <SessionInitiator type="Shib1" acsIndex="5"/>
113             </SessionInitiator>
114             
115             <!-- An example using an old-style WAYF, which means Shib 1 only unless an entityID is provided. -->
116             <SessionInitiator type="Chaining" Location="/WAYF" id="WAYF" relayState="cookie">
117                 <SessionInitiator type="SAML2" acsIndex="1" template="bindingTemplate.html"/>
118                 <SessionInitiator type="Shib1" acsIndex="5"/>
119                 <SessionInitiator type="WAYF" acsIndex="5" URL="https://wayf.example.org/WAYF"/>
120             </SessionInitiator>
121
122             <!-- An example supporting the new-style of discovery service. -->
123             <SessionInitiator type="Chaining" Location="/DS" id="DS" relayState="cookie">
124                 <SessionInitiator type="SAML2" acsIndex="1" template="bindingTemplate.html"/>
125                 <SessionInitiator type="Shib1" acsIndex="5"/>
126                 <SessionInitiator type="SAMLDS" URL="https://ds.example.org/DS/WAYF"/>
127             </SessionInitiator>
128             
129             <!--
130             md:AssertionConsumerService locations handle specific SSO protocol bindings,
131             such as SAML 2.0 POST or SAML 1.1 Artifact. The isDefault and index attributes
132             are used when sessions are initiated to determine how to tell the IdP where and
133             how to return the response.
134             -->
135             <md:AssertionConsumerService Location="/SAML2/POST" index="1"
136                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
137             <md:AssertionConsumerService Location="/SAML2/POST-SimpleSign" index="2"
138                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST-SimpleSign"/>
139             <md:AssertionConsumerService Location="/SAML2/Artifact" index="3"
140                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"/>
141             <md:AssertionConsumerService Location="/SAML2/ECP" index="4"
142                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:PAOS"/>
143             <md:AssertionConsumerService Location="/SAML/POST" index="5"
144                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post"/>
145             <md:AssertionConsumerService Location="/SAML/Artifact" index="6"
146                 Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01"/>
147
148             <!-- LogoutInitiators enable SP-initiated local or global/single logout of sessions. -->
149             <LogoutInitiator type="Chaining" Location="/Logout" relayState="cookie">
150                 <LogoutInitiator type="SAML2" template="bindingTemplate.html"/>
151                 <LogoutInitiator type="Local"/>
152             </LogoutInitiator>
153
154             <!-- md:SingleLogoutService locations handle single logout (SLO) protocol messages. -->
155             <md:SingleLogoutService Location="/SLO/SOAP"
156                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"/>
157             <md:SingleLogoutService Location="/SLO/Redirect" conf:template="bindingTemplate.html"
158                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/>
159             <md:SingleLogoutService Location="/SLO/POST" conf:template="bindingTemplate.html"
160                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
161             <md:SingleLogoutService Location="/SLO/Artifact" conf:template="bindingTemplate.html"
162                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"/>
163
164             <!-- md:ManageNameIDService locations handle NameID management (NIM) protocol messages. -->
165             <md:ManageNameIDService Location="/NIM/SOAP"
166                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"/>
167             <md:ManageNameIDService Location="/NIM/Redirect" conf:template="bindingTemplate.html"
168                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/>
169             <md:ManageNameIDService Location="/NIM/POST" conf:template="bindingTemplate.html"
170                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
171             <md:ManageNameIDService Location="/NIM/Artifact" conf:template="bindingTemplate.html"
172                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"/>
173
174             <!--
175             md:ArtifactResolutionService locations resolve artifacts issued when using the
176             SAML 2.0 HTTP-Artifact binding on outgoing messages, generally uses SOAP.
177             -->
178             <md:ArtifactResolutionService Location="/Artifact/SOAP" index="1"
179                 Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP"/>
180
181             <!-- Extension service that generates "approximate" metadata based on SP configuration. -->
182             <Handler type="MetadataGenerator" Location="/Metadata" signing="false"/>
183
184             <!-- Status reporting service. -->
185             <Handler type="Status" Location="/Status" acl="127.0.0.1"/>
186
187             <!-- Session diagnostic service. -->
188             <Handler type="Session" Location="/Session" showAttributeValues="false"/>
189
190         </Sessions>
191
192         <!--
193         Allows overriding of error template filenames. You can also add attributes with values
194         that can be plugged into the templates.
195         -->
196         <Errors supportContact="root@localhost"
197             logoLocation="/shibboleth-sp/logo.jpg"
198             styleSheet="/shibboleth-sp/main.css"/>
199         
200         <!-- Uncomment and modify to tweak settings for specific IdPs or groups. -->
201         <!-- <RelyingParty Name="SpecialFederation" keyName="SpecialKey"/> -->
202
203         <!-- Chains together all your metadata sources. -->
204         <MetadataProvider type="Chaining">
205             <!-- Example of remotely supplied batch of signed metadata. -->
206             <!--
207             <MetadataProvider type="XML" uri="http://federation.org/federation-metadata.xml"
208                  backingFilePath="federation-metadata.xml" reloadInterval="7200">
209                <MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
210                <MetadataFilter type="Signature" certificate="fedsigner.pem"/>
211             </MetadataProvider>
212             -->
213
214             <!-- Example of locally maintained metadata. -->
215             <!--
216             <MetadataProvider type="XML" file="partner-metadata.xml"/>
217             -->
218         </MetadataProvider>
219
220         <!-- Chain the two built-in trust engines together. -->
221         <TrustEngine type="Chaining">
222             <TrustEngine type="ExplicitKey"/>
223             <TrustEngine type="PKIX"/>
224         </TrustEngine>
225
226         <!-- Map to extract attributes from SAML assertions. -->
227         <AttributeExtractor type="XML" validate="true" path="attribute-map.xml"/>
228         
229         <!-- Use a SAML query if no attributes are supplied during SSO. -->
230         <AttributeResolver type="Query" subjectMatch="true"/>
231
232         <!-- Default filtering policy for recognized attributes, lets other data pass. -->
233         <AttributeFilter type="XML" validate="true" path="attribute-policy.xml"/>
234
235         <!-- Simple file-based resolver for using a single keypair. -->
236         <CredentialResolver type="File" key="sp-key.pem" certificate="sp-cert.pem"/>
237
238         <!-- Example of a second application (using a second vhost) that has a different entityID. -->
239         <!-- <ApplicationOverride id="admin" entityID="https://admin.example.org/shibboleth"/> -->
240
241     </ApplicationDefaults>
242     
243     <!-- Each policy defines a set of rules to use to secure messages. -->
244     <SecurityPolicies>
245         <!--
246         The predefined policy enforces replay/freshness, standard
247         condition processing, and permits signing and client TLS.
248         -->
249         <Policy id="default" validate="false">
250             <PolicyRule type="MessageFlow" checkReplay="true" expires="60"/>
251             <PolicyRule type="Conditions">
252                 <PolicyRule type="Audience"/>
253                 <!-- Enable Delegation rule to permit delegated access. -->
254                 <!-- <PolicyRule type="Delegation"/> -->
255             </PolicyRule>
256             <PolicyRule type="ClientCertAuth" errorFatal="true"/>
257             <PolicyRule type="XMLSigning" errorFatal="true"/>
258             <PolicyRule type="SimpleSigning" errorFatal="true"/>
259         </Policy>
260     </SecurityPolicies>
261
262 </SPConfig>