Skip to content

Commit d8eef64

Browse files
authored
Merge pull request #438 from c00kiemon5ter/feature-documentation
Documentation for configuration options
2 parents d92bfee + 6a7c7fa commit d8eef64

File tree

1 file changed

+214
-32
lines changed

1 file changed

+214
-32
lines changed

doc/howto/config.rst

Lines changed: 214 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ attribute_map_dir
6161
Format::
6262

6363
"attribute_map_dir": "attribute-maps"
64-
64+
6565
Points to a directory which has the attribute maps in Python modules.
6666
A 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

9292
As you see the format is again a python dictionary where the key is the
9393
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
9797
automatically create the other.
9898

9999
cert_file
@@ -109,11 +109,11 @@ This is the public part of the service private/public key pair.
109109
contact_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
113113
the service described by the configuration file.
114114
This is where you describe who can be contacted if questions arise
115115
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**
117117
and **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
183183
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
185185
public key should be used.
186186
This 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+
205238
service
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"
209242
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
211244
could look something like this::
212245

213246
"service": {
@@ -225,7 +258,7 @@ could look something like this::
225258
},
226259
}
227260
},
228-
261+
229262
There are two options common to all services: 'name' and 'endpoints'.
230263
The remaining options are specific to one or the other of the service types.
231264
Which 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
336369
regular 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+
378560
idp
379561
"""
380562

381563
Defines the set of IdPs that this SP is allowed to use; if unset, all listed
382564
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.
384566
A typical configuration, when the allowed set of IdPs are limited, would look
385567
something like this::
386568

@@ -404,7 +586,7 @@ Example::
404586
"optional_attributes": ["title"],
405587
}
406588
}
407-
589+
408590
Since the attribute names used here are the user friendly ones an attribute map
409591
must exist, so that the server can use the full name when communicating
410592
with 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
426608
the user friendly names.
427609

428610
want_assertions_signed
@@ -444,7 +626,7 @@ Example::
444626

445627

446628
idp/aa/sp
447-
^^^^^^^^^
629+
^^^^^^^^^
448630

449631
If 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::
516698
subject_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
520702
a distributed identifier is kept. By default this is a shelve database.
521703
So if you just specify name, then a shelve database with that name
522704
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::
548730
},
549731

550732
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
553735
have common attribute values for users that are part of the VO.
554736

555737
Complete 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

647829
Other considerations
648830
::::::::::::::::::::

0 commit comments

Comments
 (0)