1
1
.. _howto_config :
2
2
3
- Configuration of pySAML2 entities
3
+ Configuration of PySAML2 entities
4
4
=================================
5
5
6
- Whether you plan to run a pySAML2 Service Provider, Identity Provider or an
6
+ Whether you plan to run a PySAML2 Service Provider, Identity Provider or an
7
7
attribute authority, you have to configure it. The format of the configuration
8
8
file is the same regardless of which type of service you plan to run.
9
9
What differs are some of the directives.
@@ -51,7 +51,7 @@ The basic structure of the configuration file is therefore like this::
51
51
}
52
52
53
53
.. note :: You can build the metadata file for your services directly from the
54
- configuration. The make_metadata.py script in the pySAML2 tools directory
54
+ configuration. The make_metadata.py script in the PySAML2 tools directory
55
55
will do that for you.
56
56
57
57
Configuration directives
@@ -101,7 +101,7 @@ Example::
101
101
},
102
102
},
103
103
104
- The exapmle configuration above will enable DEBUG logging to stdout.
104
+ The example configuration above will enable DEBUG logging to stdout.
105
105
106
106
107
107
debug
@@ -247,6 +247,33 @@ The globally unique identifier of the entity.
247
247
.. note :: It is recommended that the entityid should point to a real
248
248
webpage where the metadata for the entity can be found.
249
249
250
+ name
251
+ ^^^^
252
+
253
+ A string value that sets the name of the PySAML2 entity.
254
+
255
+ Example::
256
+
257
+ "name": "Example IdP"
258
+
259
+ description
260
+ ^^^^^^^^^^^
261
+
262
+ A string value that sets the description of the PySAML2 entity.
263
+
264
+ Example::
265
+
266
+ "description": "My IdP",
267
+
268
+ verify_ssl_cert
269
+ ^^^^^^^^^^^^^^^
270
+
271
+ Specifies if the SSL certificates should be verified. Can be ``True `` or ``False ``.
272
+ The default configuration is ``False ``.
273
+
274
+ Example::
275
+
276
+ "verify_ssl_cert": True
250
277
251
278
key_file
252
279
^^^^^^^^
@@ -269,6 +296,21 @@ Example::
269
296
This is the public part of the service private/public key pair.
270
297
*cert_file * must be a PEM formatted file with a single certificate.
271
298
299
+ tmp_cert_file
300
+ ^^^^^^^^^^^^^
301
+
302
+ Example::
303
+ "tmp_cert_file": "tmp_cert.pem"
304
+
305
+ *tmp_cert_file * is a PEM formatted certificate file
306
+
307
+ tmp_key_file
308
+ ^^^^^^^^^^^^
309
+
310
+ Example::
311
+ "tmp_key_file": "tmp_key.pem"
312
+
313
+ *tmp_key_file * is a PEM formatted key file.
272
314
273
315
encryption_keypairs
274
316
^^^^^^^^^^^^^^^^^^^
@@ -283,6 +325,27 @@ Indicates which certificates will be used for encryption capabilities::
283
325
},
284
326
],
285
327
328
+ generate_cert_info
329
+ ^^^^^^^^^^^^^^^^^^
330
+
331
+ Specifies if information about the certificate should be generated.
332
+ A boolean value can be ``True `` or ``False ``.
333
+
334
+ Example::
335
+
336
+ "generate_cert_info": False
337
+
338
+
339
+ ca_certs
340
+ ^^^^^^^^
341
+
342
+ This is the path to a file containing root CA certificates for SSL server certificate validation.
343
+
344
+ Example::
345
+
346
+ "ca_certs": full_path("cacerts.txt"),
347
+
348
+
286
349
metadata
287
350
^^^^^^^^
288
351
@@ -450,7 +513,7 @@ difference you are prepared to accept.
450
513
Hence your server may accept a statement that in fact is too old.
451
514
452
515
allow_unknown_attributes
453
- """"""""""""""""""""""""
516
+ ^^^^^^^^^^^^^^^^^^^^^^^^
454
517
455
518
Indicates that attributes that are not recognized (they are not configured in
456
519
attribute-mapping), will not be discarded.
@@ -466,6 +529,28 @@ Example::
466
529
467
530
"xmlsec_binary": "/usr/local/bin/xmlsec1",
468
531
532
+ xmlsec_path
533
+ ^^^^^^^^^^^
534
+
535
+ This option is used to define non-system paths where the xmlsec1 binary can be located.
536
+ It can be used when the xmlsec_binary option is not defined.
537
+
538
+ Example::
539
+
540
+ "xmlsec_path": ["/usr/local/bin", "/opt/local/bin"],
541
+
542
+ OR::
543
+
544
+ from saml2.sigver import get_xmlsec_binary
545
+
546
+ if get_xmlsec_binary:
547
+ xmlsec_path = get_xmlsec_binary(["/opt/local/bin","/usr/local/bin"])
548
+ else:
549
+ xmlsec_path = '/usr/bin/xmlsec1'
550
+
551
+ "xmlsec_binary": xmlsec_path,
552
+
553
+
469
554
delete_tmpfiles
470
555
^^^^^^^^^^^^^^^
471
556
@@ -487,6 +572,76 @@ How many *hours* this configuration is expected to be accurate.::
487
572
This, of course, is only used by *make_metadata.py *.
488
573
The server will not stop working when this amount of time has elapsed :-).
489
574
575
+
576
+ metadata_key_usage
577
+ ^^^^^^^^^^^^^^^^^^^
578
+
579
+ This specifies the purpose of the entity's cryptographic keys used to sign data.
580
+ If this option is not configured it will default to ``"both" ``.
581
+
582
+ The possible options for this configuration are ``both ``, ``signing ``, ``encryption ``.
583
+
584
+ If metadata_key_usage is set to ``"signing" `` or ``"both" ``, and a cert_file is provided
585
+ the value of use in the KeyDescriptor element will be set to ``"signing" ``.
586
+
587
+ If metadata_key_usage is set to ``"both" `` or ``"encryption" `` and a enc_cert is provided
588
+ the value of ``"use" `` in the KeyDescriptor will be set to ``"encryption" ``.
589
+
590
+ Example::
591
+
592
+ "metadata_key_usage" : "both",
593
+
594
+
595
+ secret
596
+ ^^^^^^
597
+
598
+ A string value that is used in the generation of the RelayState.
599
+
600
+ Example::
601
+
602
+ "secret": "0123456789",
603
+
604
+ crypto_backend
605
+ ^^^^^^^^^^^^^^
606
+ Defines the crypto backend used for signing and encryption. The default is ``xmlsec1 ``.
607
+ The options are ``xmlsec1 `` and ``XMLSecurity ``.
608
+
609
+ If set to "XMLSecurity", the crypto backend will be pyXMLSecurity.
610
+
611
+ Example::
612
+
613
+ "crypto_backend": "xmlsec1",
614
+
615
+ verify_encrypt_advice
616
+ ^^^^^^^^^^^^^^^^^^^^^
617
+
618
+ Specifies if the encrypted assertions in the advice element should be verified.
619
+ Can be ``True `` or ``False ``.
620
+
621
+ Example::
622
+
623
+ def verify_encrypt_cert(cert_str):
624
+ osw = OpenSSLWrapper()
625
+ ca_cert_str = osw.read_str_from_file(full_path("root_cert/localhost.ca.crt"))
626
+ valid, mess = osw.verify(ca_cert_str, cert_str)
627
+ return valid
628
+
629
+ ::
630
+
631
+ "verify_encrypt_cert_advice": verify_encrypt_cert,
632
+
633
+
634
+ verify_encrypt_cert_assertion
635
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
636
+
637
+ Specifies if the encrypted assertions should be verified.
638
+ Can be ``True `` or ``False ``.
639
+
640
+ Example::
641
+
642
+ "verify_encrypt_cert_assertion": verify_encrypt_cert
643
+
644
+
490
645
Specific directives
491
646
-------------------
492
647
@@ -509,6 +664,29 @@ sign_response
509
664
Specifies if the IdP should sign the authentication response or not. Can be
510
665
True or False. Default is False.
511
666
667
+ encrypt_assertion
668
+ """""""""""""""""
669
+
670
+ Specifies if the IdP should encrypt the assertions. Can be ``True `` or ``False ``.
671
+ Default is ``False ``.
672
+
673
+ encrypted_advice_attributes
674
+ """""""""""""""""""""""""""
675
+ Specifies if assertions in the advice element should be encrypted.
676
+ Can be ``True `` or ``False ``. Default is ``False ``.
677
+
678
+ encrypt_assertion_self_contained
679
+ """"""""""""""""""""""""""""""""
680
+
681
+ Specifies if all encrypted assertions should have all namespaces self contained.
682
+ Can be ``True `` or ``False ``. Default is ``True ``.
683
+
684
+ want_authn_requests_signed
685
+ """"""""""""""""""""""""""
686
+
687
+ Indicates that the AuthnRequest received by this IdP should be signed. Can be ``True `` or ``False ``.
688
+ The default value is ``False ``.
689
+
512
690
want_authn_requests_only_with_valid_cert
513
691
""""""""""""""""""""""""""""""""""""""""
514
692
@@ -608,6 +786,79 @@ regular expressions.::
608
786
609
787
Here only mail addresses that end with ".umu.se" will be returned.
610
788
789
+ scope
790
+ """""
791
+
792
+ A list of string values that will be used to set the ``<Scope> `` element
793
+ The default value of regexp is ``False ``.
794
+
795
+ Example::
796
+
797
+ "scope": ["example.org", "example.com"],
798
+
799
+
800
+ ui_info
801
+ """"""""
802
+
803
+ This determines what information to display about an entity by
804
+ configuring its mdui:UIInfo element. The configurable options include;
805
+
806
+ *privacy_statement_url *
807
+ The URL to information about the privacy practices of the entity.
808
+ *information_url *
809
+ Which URL contains localized information about the entity.
810
+ *logo *
811
+ The logo image for the entity. The value is a dictionary with keys
812
+ height, width and text.
813
+ *display_name *
814
+ The localized name for the entity.
815
+ *description *
816
+ The localized description of the entity. The value is a dictionary with keys
817
+ text and lang.
818
+ *keywords *
819
+ The localized search keywords for the entity. The value is a dictionary with keys
820
+ lang and text.
821
+
822
+ Example::
823
+
824
+ "ui_info": {
825
+ "privacy_statement_url": "http://example.com/saml2/privacyStatement.html",
826
+ "information_url": "http://example.com/saml2/info.html",
827
+ "logo": {
828
+ "height": "40",
829
+ "width" : "30",
830
+ "text": "http://example.com/logo.jpg"
831
+ },
832
+ "display_name": "Example Co.",
833
+ "description" : {"text":"Exempel Bolag","lang":"se"},
834
+ "keywords": {"lang":"en", "text":["foo", "bar"]}
835
+ }
836
+
837
+
838
+ name_qualifier
839
+ """"""""""""""
840
+
841
+ A string value that sets the ``NameQualifier `` attribute of the ``<NameIdentifier> `` element.
842
+
843
+ Example::
844
+
845
+ "name_qualifier": "http://authentic.example.com/saml/metadata",
846
+
847
+
848
+ session_storage
849
+ """""""""""""""
850
+
851
+ Example::
852
+
853
+ "session_storage": ("mongodb", "session")
854
+
855
+ domain
856
+ """"""
857
+
858
+ Example::
859
+
860
+ "domain": "umu.se",
861
+
611
862
sp
612
863
^^
613
864
@@ -929,6 +1180,47 @@ Example::
929
1180
}
930
1181
}
931
1182
1183
+ discovery_response
1184
+ """"""""""""""""""
1185
+
1186
+ This configuration allows the SP to include one or more Discovery Response Endpoints.
1187
+ The discovery_response can be the just the URL::
1188
+
1189
+ "discovery_response":["http://example.com/sp/ds"],
1190
+
1191
+ or it can be a 2 tuple of the URL+Binding::
1192
+
1193
+ from saml2.extension.idpdisc import BINDING_DISCO
1194
+
1195
+ "discovery_response": [("http://example.com/sp/ds", BINDING_DISCO)]
1196
+
1197
+ ecp
1198
+ """
1199
+
1200
+ This configuration option takes a dictionary with the ecp client IP address as the
1201
+ key and the entity ID as the value.
1202
+
1203
+ Example::
1204
+
1205
+ "ecp": {
1206
+ "203.0.113.254": "http://example.com/idp",
1207
+ }
1208
+
1209
+ requested_attribute_name_format
1210
+ """""""""""""""""""""""""""""""
1211
+
1212
+ This sets the NameFormat attribute in the ``<RequestedAttribute> `` element.
1213
+ The name formats are defined in saml2.saml.py. If not configured the default is ``NAME_FORMAT_URI ``
1214
+ which corresponds to ``urn:oasis:names:tc:SAML:2.0:attrname-format:uri ``.
1215
+
1216
+ Example::
1217
+
1218
+ from saml2.saml import NAME_FORMAT_BASIC
1219
+
1220
+ ::
1221
+
1222
+ "requested_attribute_name_format": NAME_FORMAT_BASIC
1223
+
932
1224
933
1225
idp/aa/sp
934
1226
^^^^^^^^^
@@ -1211,7 +1503,7 @@ Entity Categories
1211
1503
1212
1504
Entity categories and their attributes are defined in
1213
1505
src/saml2/entity_category/<registrar-of-entity-category>.py.
1214
- We can configure Entity Categories in pysaml2 in two ways:
1506
+ We can configure Entity Categories in PySAML2 in two ways:
1215
1507
1216
1508
1. Using the configuration options *entity_category_support * or
1217
1509
*entity_category *, to generate the appropriate EntityAttribute metadata
0 commit comments