]> BookStack Code Mirror - bookstack/blob - app/Config/saml2_settings.php
Initial work on SAML integration
[bookstack] / app / Config / saml2_settings.php
1 <?php
2
3 //This is variable is an example - Just make sure that the urls in the 'idp' config are ok.
4 $idp_host = env('SAML2_IDP_HOST', 'http://localhost:8000/simplesaml');
5
6 return $settings = array(
7
8     /**
9      * Whether the SAML login is enabled
10      */
11     'enabled' => env("SAML2_ENABLED", false),
12
13     /**
14      * If 'useRoutes' is set to true, the package defines five new routes:
15      *
16      *    Method | URI                      | Name
17      *    -------|--------------------------|------------------
18      *    POST   | {routesPrefix}/acs       | saml_acs
19      *    GET    | {routesPrefix}/login     | saml_login
20      *    GET    | {routesPrefix}/logout    | saml_logout
21      *    GET    | {routesPrefix}/metadata  | saml_metadata
22      *    GET    | {routesPrefix}/sls       | saml_sls
23      */
24     'useRoutes' => true,
25
26     'routesPrefix' => '/saml2',
27
28     /**
29      * which middleware group to use for the saml routes
30      * Laravel 5.2 will need a group which includes StartSession
31      */
32     'routesMiddleware' => [],
33
34     /**
35      * Indicates how the parameters will be
36      * retrieved from the sls request for signature validation
37      */
38     'retrieveParametersFromServer' => false,
39
40     /**
41      * Where to redirect after logout
42      */
43     'logoutRoute' => '/',
44
45     /**
46      * Where to redirect after login if no other option was provided
47      */
48     'loginRoute' => '/',
49
50
51     /**
52      * Where to redirect after login if no other option was provided
53      */
54     'errorRoute' => '/',
55
56
57
58
59     /*****
60      * One Login Settings
61      */
62
63
64
65     // If 'strict' is True, then the PHP Toolkit will reject unsigned
66     // or unencrypted messages if it expects them signed or encrypted
67     // Also will reject the messages if not strictly follow the SAML
68     // standard: Destination, NameId, Conditions ... are validated too.
69     'strict' => true, //@todo: make this depend on laravel config
70
71     // Enable debug mode (to print errors)
72     'debug' => env('APP_DEBUG', false),
73
74     // If 'proxyVars' is True, then the Saml lib will trust proxy headers
75     // e.g X-Forwarded-Proto / HTTP_X_FORWARDED_PROTO. This is useful if
76     // your application is running behind a load balancer which terminates
77     // SSL.
78     'proxyVars' => false,
79
80     // Service Provider Data that we are deploying
81     'sp' => array(
82
83         // Specifies constraints on the name identifier to be used to
84         // represent the requested subject.
85         // Take a look on lib/Saml2/Constants.php to see the NameIdFormat supported
86         'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
87
88         // Usually x509cert and privateKey of the SP are provided by files placed at
89         // the certs folder. But we can also provide them with the following parameters
90         'x509cert' => env('SAML2_SP_x509',''),
91         'privateKey' => env('SAML2_SP_PRIVATEKEY',''),
92
93         // Identifier (URI) of the SP entity.
94         // Leave blank to use the 'saml_metadata' route.
95         'entityId' => env('SAML2_SP_ENTITYID',''),
96
97         // Specifies info about where and how the <AuthnResponse> message MUST be
98         // returned to the requester, in this case our SP.
99         'assertionConsumerService' => array(
100             // URL Location where the <Response> from the IdP will be returned,
101             // using HTTP-POST binding.
102             // Leave blank to use the 'saml_acs' route
103             'url' => '',
104         ),
105         // Specifies info about where and how the <Logout Response> message MUST be
106         // returned to the requester, in this case our SP.
107         // Remove this part to not include any URL Location in the metadata.
108         'singleLogoutService' => array(
109             // URL Location where the <Response> from the IdP will be returned,
110             // using HTTP-Redirect binding.
111             // Leave blank to use the 'saml_sls' route
112             'url' => '',
113         ),
114     ),
115
116     // Identity Provider Data that we want connect with our SP
117     'idp' => array(
118         // Identifier of the IdP entity  (must be a URI)
119         'entityId' => env('SAML2_IDP_ENTITYID', $idp_host . '/saml2/idp/metadata.php'),
120         // SSO endpoint info of the IdP. (Authentication Request protocol)
121         'singleSignOnService' => array(
122             // URL Target of the IdP where the SP will send the Authentication Request Message,
123             // using HTTP-Redirect binding.
124             'url' => env('SAML2_IDP_SSO', $idp_host . '/saml2/idp/SSOService.php'),
125         ),
126         // SLO endpoint info of the IdP.
127         'singleLogoutService' => array(
128             // URL Location of the IdP where the SP will send the SLO Request,
129             // using HTTP-Redirect binding.
130             'url' => env('SAML2_IDP_SLO', $idp_host . '/saml2/idp/SingleLogoutService.php'),
131         ),
132         // Public x509 certificate of the IdP
133         'x509cert' => env('SAML2_IDP_x509', 'MIID/TCCAuWgAwIBAgIJAI4R3WyjjmB1MA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjAeFw0xNDEyMDExNDM2MjVaFw0yNDExMzAxNDM2MjVaMIGUMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVlbm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxDDAKBgNVBAoMA1NJVTERMA8GA1UECwwIU2lzdGVtYXMxFDASBgNVBAMMC09yZy5TaXUuQ29tMSAwHgYJKoZIhvcNAQkBFhFhZG1pbmlAc2l1LmVkdS5hcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbzW/EpEv+qqZzfT1Buwjg9nnNNVrxkCfuR9fQiQw2tSouS5X37W5h7RmchRt54wsm046PDKtbSz1NpZT2GkmHN37yALW2lY7MyVUC7itv9vDAUsFr0EfKIdCKgxCKjrzkZ5ImbNvjxf7eA77PPGJnQ/UwXY7W+cvLkirp0K5uWpDk+nac5W0JXOCFR1BpPUJRbz2jFIEHyChRt7nsJZH6ejzNqK9lABEC76htNy1Ll/D3tUoPaqo8VlKW3N3MZE0DB9O7g65DmZIIlFqkaMH3ALd8adodJtOvqfDU/A6SxuwMfwDYPjoucykGDu1etRZ7dF2gd+W+1Pn7yizPT1q8CAwEAAaNQME4wHQYDVR0OBBYEFPsn8tUHN8XXf23ig5Qro3beP8BuMB8GA1UdIwQYMBaAFPsn8tUHN8XXf23ig5Qro3beP8BuMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAGu60odWFiK+DkQekozGnlpNBQz5lQ/bwmOWdktnQj6HYXu43e7sh9oZWArLYHEOyMUekKQAxOK51vbTHzzw66BZU91/nqvaOBfkJyZKGfluHbD0/hfOl/D5kONqI9kyTu4wkLQcYGyuIi75CJs15uA03FSuULQdY/Liv+czS/XYDyvtSLnu43VuAQWN321PQNhuGueIaLJANb2C5qq5ilTBUw6PxY9Z+vtMjAjTJGKEkE/tQs7CvzLPKXX3KTD9lIILmX5yUC3dLgjVKi1KGDqNApYGOMtjr5eoxPQrqDBmyx3flcy0dQTdLXud3UjWVW3N0PYgJtw5yBsS74QTGD4='),
134         /*
135          *  Instead of use the whole x509cert you can use a fingerprint
136          *  (openssl x509 -noout -fingerprint -in "idp.crt" to generate it)
137          */
138         // 'certFingerprint' => '',
139     ),
140
141
142
143     /***
144      *
145      *  OneLogin advanced settings
146      *
147      *
148      */
149     // Security settings
150     'security' => array(
151
152         /** signatures and encryptions offered */
153
154         // Indicates that the nameID of the <samlp:logoutRequest> sent by this SP
155         // will be encrypted.
156         'nameIdEncrypted' => false,
157
158         // Indicates whether the <samlp:AuthnRequest> messages sent by this SP
159         // will be signed.              [The Metadata of the SP will offer this info]
160         'authnRequestsSigned' => false,
161
162         // Indicates whether the <samlp:logoutRequest> messages sent by this SP
163         // will be signed.
164         'logoutRequestSigned' => false,
165
166         // Indicates whether the <samlp:logoutResponse> messages sent by this SP
167         // will be signed.
168         'logoutResponseSigned' => false,
169
170         /* Sign the Metadata
171          False || True (use sp certs) || array (
172                                                     keyFileName => 'metadata.key',
173                                                     certFileName => 'metadata.crt'
174                                                 )
175         */
176         'signMetadata' => false,
177
178
179         /** signatures and encryptions required **/
180
181         // Indicates a requirement for the <samlp:Response>, <samlp:LogoutRequest> and
182         // <samlp:LogoutResponse> elements received by this SP to be signed.
183         'wantMessagesSigned' => false,
184
185         // Indicates a requirement for the <saml:Assertion> elements received by
186         // this SP to be signed.        [The Metadata of the SP will offer this info]
187         'wantAssertionsSigned' => false,
188
189         // Indicates a requirement for the NameID received by
190         // this SP to be encrypted.
191         'wantNameIdEncrypted' => false,
192
193         // Authentication context.
194         // Set to false and no AuthContext will be sent in the AuthNRequest,
195         // Set true or don't present thi parameter and you will get an AuthContext 'exact' 'urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport'
196         // Set an array with the possible auth context values: array ('urn:oasis:names:tc:SAML:2.0:ac:classes:Password', 'urn:oasis:names:tc:SAML:2.0:ac:classes:X509'),
197         'requestedAuthnContext' => true,
198     ),
199
200     // Contact information template, it is recommended to suply a technical and support contacts
201     'contactPerson' => array(
202         'technical' => array(
203             'givenName' => 'name',
204             'emailAddress' => '[email protected]'
205         ),
206         'support' => array(
207             'givenName' => 'Support',
208             'emailAddress' => '[email protected]'
209         ),
210     ),
211
212     // Organization information template, the info in en_US lang is recomended, add more if required
213     'organization' => array(
214         'en-US' => array(
215             'name' => 'Name',
216             'displayname' => 'Display Name',
217             'url' => 'http://url'
218         ),
219     ),
220
221 /* Interoperable SAML 2.0 Web Browser SSO Profile [saml2int]   http://saml2int.org/profile/current
222
223    'authnRequestsSigned' => false,    // SP SHOULD NOT sign the <samlp:AuthnRequest>,
224                                       // MUST NOT assume that the IdP validates the sign
225    'wantAssertionsSigned' => true,
226    'wantAssertionsEncrypted' => true, // MUST be enabled if SSL/HTTPs is disabled
227    'wantNameIdEncrypted' => false,
228 */
229
230 );