@@ -61,7 +61,7 @@ attribute_map_dir
61
61
Format::
62
62
63
63
"attribute_map_dir": "attribute-maps"
64
-
64
+
65
65
Points to a directory which has the attribute maps in Python modules.
66
66
A typical map file will looks like this::
67
67
@@ -91,9 +91,9 @@ The *to* and *fro* sub-dictionaries then contain the mapping between the names.
91
91
92
92
As you see the format is again a python dictionary where the key is the
93
93
name to convert from, and the value is the name to convert to.
94
-
95
- Since *to * in most cases is the inverse of the *fro * file, the
96
- software allowes you to only specify one of them and it will
94
+
95
+ Since *to * in most cases is the inverse of the *fro * file, the
96
+ software allowes you to only specify one of them and it will
97
97
automatically create the other.
98
98
99
99
cert_file
@@ -109,11 +109,11 @@ This is the public part of the service private/public key pair.
109
109
contact_person
110
110
^^^^^^^^^^^^^^
111
111
112
- This is only used by *make_metadata.py * when it constructs the metadata for
112
+ This is only used by *make_metadata.py * when it constructs the metadata for
113
113
the service described by the configuration file.
114
114
This is where you describe who can be contacted if questions arise
115
115
about the service or if support is needed. The possible types are according to
116
- the standard **technical **, **support **, **administrative **, **billing **
116
+ the standard **technical **, **support **, **administrative **, **billing **
117
117
and **other **.::
118
118
119
119
contact_person: [{
@@ -179,9 +179,9 @@ a file accessible on the server the service runs on, or somewhere on the net.::
179
179
}],
180
180
},
181
181
182
- The above configuration means that the service should read two local
182
+ The above configuration means that the service should read two local
183
183
metadata files, and on top of that load one from the net. To verify the
184
- authenticity of the file downloaded from the net, the local copy of the
184
+ authenticity of the file downloaded from the net, the local copy of the
185
185
public key should be used.
186
186
This public key must be acquired by some out-of-band method.
187
187
@@ -198,16 +198,49 @@ Where you describe the organization responsible for the service.::
198
198
}
199
199
200
200
.. note :: You can specify the language of the name, or the language used on
201
- the webpage, by entering a tuple, instead of a simple string,
201
+ the webpage, by entering a tuple, instead of a simple string,
202
202
where the second part is the language code. If you don't specify a
203
203
language the default is "en" (English).
204
204
205
+ preferred_binding
206
+ ^^^^^^^^^^^^^^^^^
207
+
208
+ Which binding should be prefered for a service.
209
+ Example configuration::
210
+
211
+ "preferred_binding" = {
212
+ "single_sign_on_service": [
213
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
214
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
215
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',
216
+ ],
217
+ "single_logout_service": [
218
+ 'urn:oasis:names:tc:SAML:2.0:bindings:SOAP',
219
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
220
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',
221
+ 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact',
222
+ ],
223
+ }
224
+
225
+ The available services are:
226
+
227
+ * manage_name_id_service
228
+ * assertion_consumer_service
229
+ * name_id_mapping_service
230
+ * authn_query_service
231
+ * attribute_service
232
+ * authz_service
233
+ * assertion_id_request_service
234
+ * artifact_resolution_service
235
+ * attribute_consuming_service
236
+
237
+
205
238
service
206
239
^^^^^^^
207
240
208
- Which services the server will provide; those are combinations of "idp", "sp"
241
+ Which services the server will provide; those are combinations of "idp", "sp"
209
242
and "aa".
210
- So if a server is a Service Provider (SP) then the configuration
243
+ So if a server is a Service Provider (SP) then the configuration
211
244
could look something like this::
212
245
213
246
"service": {
@@ -225,7 +258,7 @@ could look something like this::
225
258
},
226
259
}
227
260
},
228
-
261
+
229
262
There are two options common to all services: 'name' and 'endpoints'.
230
263
The remaining options are specific to one or the other of the service types.
231
264
Which one is specified along side the name of the option.
@@ -312,17 +345,17 @@ An example might be::
312
345
}
313
346
}
314
347
}
315
-
316
- *lifetime *
317
- This is the maximum amount of time before the information should be
318
- regarded as stale. In an Assertion this is represented in the NotOnOrAfter
319
- attribute.
348
+
349
+ *lifetime *
350
+ This is the maximum amount of time before the information should be
351
+ regarded as stale. In an Assertion this is represented in the NotOnOrAfter
352
+ attribute.
320
353
*attribute_restrictions *
321
354
By default there is no restrictions as to which attributes should be
322
- return. Instead all the attributes and values that are gathered by the
355
+ return. Instead all the attributes and values that are gathered by the
323
356
database backends will be returned if nothing else is stated.
324
357
In the example above the SP with the entity identifier
325
- "urn:mace: umu.se:saml: roland:sp"
358
+ "urn:mace: umu.se:saml: roland:sp"
326
359
has an attribute restriction: only the attributes
327
360
'givenName' and 'surName' are to be returned. There is no limitations as to
328
361
what values on these attributes that can be returned.
@@ -332,7 +365,7 @@ An example might be::
332
365
the friendly name, and the saml attribute name will be taken from the uri/oid
333
366
defined in the attribute map.
334
367
335
- If restrictions on values are deemed necessary those are represented by
368
+ If restrictions on values are deemed necessary those are represented by
336
369
regular expressions.::
337
370
338
371
"service": {
@@ -375,12 +408,161 @@ Example::
375
408
}
376
409
377
410
411
+ want_response_signed
412
+ """"""""""""""""""""
413
+
414
+ Indicates that Authentication Responses to this SP must be signed. If set to
415
+ True, the SP will not consume any SAML Responses that are not signed.
416
+
417
+ Example::
418
+
419
+ "service": {
420
+ "sp": {
421
+ "want_response_signed": True,
422
+ }
423
+ }
424
+
425
+
426
+ force_authn
427
+ """""""""""
428
+
429
+ Mandates that the identity provider MUST authenticate the presenter directly
430
+ rather than rely on a previous security context.
431
+
432
+ Example::
433
+
434
+ "service": {
435
+ "sp": {
436
+ "force_authn": True,
437
+ }
438
+ }
439
+
440
+
441
+ allow_unsolicited
442
+ """""""""""""""""
443
+
444
+ When set to true, the SP will consume unsolicited SAML Responses, i.e. SAML
445
+ Responses for which it has not sent a respective SAML Authentication Request.
446
+
447
+ Example::
448
+
449
+ "service": {
450
+ "sp": {
451
+ "allow_unsolicited": True,
452
+ }
453
+ }
454
+
455
+
456
+ hide_assertion_consumer_service
457
+ """""""""""""""""""""""""""""""
458
+
459
+ When set to true the AuthnRequest will not include the
460
+ AssertionConsumerServiceURL and ProtocolBinding attributes.
461
+
462
+ Example::
463
+
464
+ "service": {
465
+ "sp": {
466
+ "hide_assertion_consumer_service": True,
467
+ }
468
+ }
469
+
470
+ This kind of functionality is required for the eIDAS SAML profile
471
+
472
+ > eIDAS-Connectors SHOULD NOT provide AssertionConsumerServiceURL.
473
+
474
+ .. note ::
475
+ This is relevant only for the eIDAS SAML profile.
476
+
477
+
478
+ sp_type
479
+ """""""
480
+
481
+ Sets the value for the eIDAS SPType node. By the eIDAS specification the value
482
+ can be one of *public * and *private *.
483
+
484
+ Example::
485
+
486
+ "service": {
487
+ "sp": {
488
+ "sp_type": "private",
489
+ }
490
+ }
491
+
492
+ .. note ::
493
+ This is relevant only for the eIDAS SAML profile.
494
+
495
+
496
+ sp_type_in_metadata
497
+ """""""""""""""""""
498
+
499
+ Whether the SPType node should appear in the metadata document
500
+ or as part of each AuthnRequest.
501
+
502
+ Example::
503
+
504
+ "service": {
505
+ "sp": {
506
+ "sp_type_in_metadata": True,
507
+ }
508
+ }
509
+
510
+ .. note ::
511
+ This is relevant only for the eIDAS SAML profile.
512
+
513
+
514
+ requested_attributes
515
+ """"""""""""""""""""
516
+
517
+ A list of attributes that the SP requires from an eIDAS-Service (IdP).
518
+ Each attribute is an object with the following attributes:
519
+
520
+ * friendly_name
521
+ * name
522
+ * required
523
+ * name_format
524
+
525
+ Where friendly_name is an attribute name such as *DateOfBirth *, name is the
526
+ full attribute name such as
527
+ *http://eidas.europa.eu/attributes/naturalperson/DateOfBirth *, required
528
+ indicates whether this attributed is required for authentication, and
529
+ name_format indicates the name format for that attribute, such as
530
+ *urn:oasis:names:tc:SAML:2.0:attrname-format:uri *.
531
+
532
+ It is mandatory that at least name or friendly_name is set.
533
+ By default attributes are assumed to be required.
534
+ Missing attributes are infered based on the attribute maps data.
535
+
536
+ Example::
537
+
538
+ "service": {
539
+ "sp": {
540
+ "requested_attributes": [
541
+ {
542
+ "name": "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier",
543
+ },
544
+ {
545
+ "friendly_name": "DateOfBirth",
546
+ "required": False,
547
+ },
548
+ ],
549
+ }
550
+ }
551
+
552
+ .. note ::
553
+ This is relevant only for the eIDAS SAML profile.
554
+
555
+ This option is different from the required_attributes and
556
+ optional_attributes parameters that control the requested
557
+ attributes in the metadata of an SP.
558
+
559
+
378
560
idp
379
561
"""
380
562
381
563
Defines the set of IdPs that this SP is allowed to use; if unset, all listed
382
564
IdPs may be used. If set, then the value is expected to be a list with entity
383
- identifiers for the allowed IdPs.
565
+ identifiers for the allowed IdPs.
384
566
A typical configuration, when the allowed set of IdPs are limited, would look
385
567
something like this::
386
568
@@ -404,7 +586,7 @@ Example::
404
586
"optional_attributes": ["title"],
405
587
}
406
588
}
407
-
589
+
408
590
Since the attribute names used here are the user friendly ones an attribute map
409
591
must exist, so that the server can use the full name when communicating
410
592
with other servers.
@@ -422,7 +604,7 @@ Example::
422
604
}
423
605
}
424
606
425
- Again as for *optional_attributes * the names given are expected to be
607
+ Again as for *optional_attributes * the names given are expected to be
426
608
the user friendly names.
427
609
428
610
want_assertions_signed
@@ -444,7 +626,7 @@ Example::
444
626
445
627
446
628
idp/aa/sp
447
- ^^^^^^^^^
629
+ ^^^^^^^^^
448
630
449
631
If the configuration is covering both two or three different service types
450
632
(like if one server is actually acting as both an IdP and a SP) then in some
@@ -516,7 +698,7 @@ Example::
516
698
subject_data
517
699
""""""""""""
518
700
519
- The name of a database where the map between a local identifier and
701
+ The name of a database where the map between a local identifier and
520
702
a distributed identifier is kept. By default this is a shelve database.
521
703
So if you just specify name, then a shelve database with that name
522
704
is created. On the other hand if you specify a tuple then the first
@@ -548,8 +730,8 @@ Gives information about common identifiers for virtual_organizations::
548
730
},
549
731
550
732
Keys in this dictionary are the identifiers for the virtual organizations.
551
- The arguments per organization are 'nameid_format' and 'common_identifier'.
552
- Useful if all the IdPs and AAs that are involved in a virtual organization
733
+ The arguments per organization are 'nameid_format' and 'common_identifier'.
734
+ Useful if all the IdPs and AAs that are involved in a virtual organization
553
735
have common attribute values for users that are part of the VO.
554
736
555
737
Complete example
@@ -622,9 +804,9 @@ A slightly more complex configuration::
622
804
"key_file" : "./mykey.pem",
623
805
"cert_file" : "./mycert.pem",
624
806
"xmlsec_binary" : "/usr/local/bin/xmlsec1",
625
- "metadata" : {
807
+ "metadata" : {
626
808
"local": ["example.xml"],
627
- "remote": [{
809
+ "remote": [{
628
810
"url":"https://kalmar2.org/simplesaml/module.php/aggregator/?id=kalmarcentral2&set=saml2",
629
811
"cert":"kalmar2.pem"}]
630
812
},
@@ -640,9 +822,9 @@ A slightly more complex configuration::
640
822
"type": "technical",
641
823
}]
642
824
}
643
-
644
- Uses metadata files, both local and remote, and will talk to whatever
645
- IdP that appears in any of the metadata files.
825
+
826
+ Uses metadata files, both local and remote, and will talk to whatever
827
+ IdP that appears in any of the metadata files.
646
828
647
829
Other considerations
648
830
::::::::::::::::::::
0 commit comments