@@ -61,7 +61,7 @@ attribute_map_dir
6161Format::
6262
6363 "attribute_map_dir": "attribute-maps"
64-
64+
6565Points to a directory which has the attribute maps in Python modules.
6666A typical map file will looks like this::
6767
@@ -91,9 +91,9 @@ The *to* and *fro* sub-dictionaries then contain the mapping between the names.
9191
9292As you see the format is again a python dictionary where the key is the
9393name 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
9797automatically create the other.
9898
9999cert_file
@@ -109,11 +109,11 @@ This is the public part of the service private/public key pair.
109109contact_person
110110^^^^^^^^^^^^^^
111111
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
113113the service described by the configuration file.
114114This is where you describe who can be contacted if questions arise
115115about 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 **
117117and **other **.::
118118
119119 contact_person: [{
@@ -179,9 +179,9 @@ a file accessible on the server the service runs on, or somewhere on the net.::
179179 }],
180180 },
181181
182- The above configuration means that the service should read two local
182+ The above configuration means that the service should read two local
183183metadata 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
185185public key should be used.
186186This public key must be acquired by some out-of-band method.
187187
@@ -198,16 +198,49 @@ Where you describe the organization responsible for the service.::
198198 }
199199
200200.. 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,
202202 where the second part is the language code. If you don't specify a
203203 language the default is "en" (English).
204204
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+
205238service
206239^^^^^^^
207240
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"
209242and "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
211244could look something like this::
212245
213246 "service": {
@@ -225,7 +258,7 @@ could look something like this::
225258 },
226259 }
227260 },
228-
261+
229262There are two options common to all services: 'name' and 'endpoints'.
230263The remaining options are specific to one or the other of the service types.
231264Which one is specified along side the name of the option.
@@ -312,17 +345,17 @@ An example might be::
312345 }
313346 }
314347 }
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.
320353*attribute_restrictions *
321354 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
323356 database backends will be returned if nothing else is stated.
324357 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"
326359 has an attribute restriction: only the attributes
327360 'givenName' and 'surName' are to be returned. There is no limitations as to
328361 what values on these attributes that can be returned.
@@ -332,7 +365,7 @@ An example might be::
332365 the friendly name, and the saml attribute name will be taken from the uri/oid
333366 defined in the attribute map.
334367
335- If restrictions on values are deemed necessary those are represented by
368+ If restrictions on values are deemed necessary those are represented by
336369regular expressions.::
337370
338371 "service": {
@@ -375,12 +408,161 @@ Example::
375408 }
376409
377410
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+
378560idp
379561"""
380562
381563Defines the set of IdPs that this SP is allowed to use; if unset, all listed
382564IdPs 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.
384566A typical configuration, when the allowed set of IdPs are limited, would look
385567something like this::
386568
@@ -404,7 +586,7 @@ Example::
404586 "optional_attributes": ["title"],
405587 }
406588 }
407-
589+
408590Since the attribute names used here are the user friendly ones an attribute map
409591must exist, so that the server can use the full name when communicating
410592with other servers.
@@ -422,7 +604,7 @@ Example::
422604 }
423605 }
424606
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
426608the user friendly names.
427609
428610want_assertions_signed
@@ -444,7 +626,7 @@ Example::
444626
445627
446628idp/aa/sp
447- ^^^^^^^^^
629+ ^^^^^^^^^
448630
449631If the configuration is covering both two or three different service types
450632(like if one server is actually acting as both an IdP and a SP) then in some
@@ -516,7 +698,7 @@ Example::
516698subject_data
517699""""""""""""
518700
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
520702a distributed identifier is kept. By default this is a shelve database.
521703So if you just specify name, then a shelve database with that name
522704is 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::
548730 },
549731
550732Keys 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
553735have common attribute values for users that are part of the VO.
554736
555737Complete example
@@ -622,9 +804,9 @@ A slightly more complex configuration::
622804 "key_file" : "./mykey.pem",
623805 "cert_file" : "./mycert.pem",
624806 "xmlsec_binary" : "/usr/local/bin/xmlsec1",
625- "metadata" : {
807+ "metadata" : {
626808 "local": ["example.xml"],
627- "remote": [{
809+ "remote": [{
628810 "url":"https://kalmar2.org/simplesaml/module.php/aggregator/?id=kalmarcentral2&set=saml2",
629811 "cert":"kalmar2.pem"}]
630812 },
@@ -640,9 +822,9 @@ A slightly more complex configuration::
640822 "type": "technical",
641823 }]
642824 }
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.
646828
647829Other considerations
648830::::::::::::::::::::
0 commit comments