├── tests
├── __init__.py
├── src
│ ├── __init__.py
│ └── OneLogin
│ │ ├── __init__.py
│ │ └── saml2_tests
│ │ ├── __init__.py
│ │ ├── error_test.py
│ │ └── signed_response_test.py
├── settings
│ ├── settings.json
│ ├── settings9.json
│ ├── settings6.json
│ ├── settings10.json
│ ├── settings3.json
│ ├── settings1.json
│ ├── settings2.json
│ ├── settings11.json
│ └── settings5.json
├── data
│ ├── customPath
│ │ ├── settings.json
│ │ ├── advanced_settings.json
│ │ └── certs
│ │ │ ├── sp.key
│ │ │ ├── metadata.key
│ │ │ ├── idp.crt
│ │ │ ├── sp.crt
│ │ │ ├── Test_Root_CA.crt
│ │ │ └── metadata.crt
│ ├── logout_responses
│ │ ├── invalids
│ │ │ ├── no_status.xml.base64
│ │ │ └── status_code_responder.xml.base64
│ │ ├── logout_response_deflated.xml.base64
│ │ ├── logout_response_with_encoding_deflated.xml.base64
│ │ ├── logout_response.xml
│ │ ├── logout_response_with_encoding.xml
│ │ └── logout_response.xml.base64
│ ├── logout_requests
│ │ ├── logout_request_deflated.xml.base64
│ │ ├── invalids
│ │ │ ├── not_after_failed.xml.base64
│ │ │ ├── invalid_issuer.xml.base64
│ │ │ ├── no_nameId.xml
│ │ │ ├── not_after_failed.xml
│ │ │ └── invalid_issuer.xml
│ │ ├── logout_request.xml
│ │ ├── logout_request_with_encoding.xml
│ │ ├── logout_request_with_sessionindex.xml
│ │ ├── logout_request.xml.base64
│ │ └── logout_request_encrypted_nameid.xml
│ ├── responses
│ │ ├── invalids
│ │ │ ├── status_code_responder.xml.base64
│ │ │ ├── status_code_responer_and_msg.xml.base64
│ │ │ ├── no_signature.xml.base64
│ │ │ ├── no_subjectconfirmation_data.xml.base64
│ │ │ ├── no_nameid.xml.base64
│ │ │ ├── invalid_audience.xml.base64
│ │ │ ├── invalid_subjectconfirmation_inresponse.xml.base64
│ │ │ ├── invalid_sessionindex.xml.base64
│ │ │ ├── invalid_subjectconfirmation_recipient.xml.base64
│ │ │ ├── invalid_subjectconfirmation_nb.xml.base64
│ │ │ ├── invalid_subjectconfirmation_noa.xml.base64
│ │ │ ├── invalid_issuer_assertion.xml.base64
│ │ │ ├── invalid_issuer_message.xml.base64
│ │ │ ├── no_subjectconfirmation_method.xml.base64
│ │ │ ├── no_key.xml.base64
│ │ │ ├── no_saml2.xml.base64
│ │ │ ├── no_id.xml.base64
│ │ │ └── not_after_failed.xml.base64
│ │ ├── unsigned_assertion.xml.base64
│ │ ├── no_audience.xml.base64
│ │ ├── decrypted_valid_encrypted_assertion.xml
│ │ ├── pretty_decrypted_valid_encrypted_assertion.xml
│ │ ├── unsigned_response.xml.base64
│ │ ├── unsigned_response_with_miliseconds.xm.base64
│ │ └── open_saml_response.xml
│ ├── misc
│ │ ├── sp3.key
│ │ ├── sp2.key
│ │ └── sp4.key
│ ├── metadata
│ │ ├── no_expiration_mark_metadata.xml
│ │ ├── metadata_settings1.xml
│ │ ├── unparsed_metadata.xml
│ │ ├── metadata_bad_order_settings1.xml
│ │ ├── idp_metadata2.xml
│ │ ├── idp_metadata.xml
│ │ ├── expired_metadata_settings1.xml
│ │ └── noentity_metadata_settings1.xml
│ └── requests
│ │ ├── authn_request.xml
│ │ └── authn_request.xml.base64
└── certs
│ └── certificate1
├── demo-django
├── demo
│ ├── __init__.py
│ ├── urls.py
│ ├── wsgi.py
│ └── settings.py
├── requirements.txt
├── manage.py
├── saml
│ ├── certs
│ │ └── README
│ ├── advanced_settings.json
│ └── settings.json
└── templates
│ ├── base.html
│ ├── attrs.html
│ └── index.html
├── demo-flask
├── requirements.txt
├── saml
│ ├── certs
│ │ └── README
│ ├── advanced_settings.json
│ └── settings.json
└── templates
│ ├── attrs.html
│ ├── base.html
│ └── index.html
├── demo-tornado
├── requirements.txt
├── Settings.py
├── README.md
├── saml
│ ├── certs
│ │ └── README
│ ├── advanced_settings.json
│ └── settings.json
└── templates
│ ├── base.html
│ ├── attrs.html
│ └── index.html
├── demo_pyramid
├── CHANGES.txt
├── .coveragerc
├── pytest.ini
├── demo_pyramid
│ ├── static
│ │ ├── pyramid.png
│ │ └── pyramid-16x16.png
│ ├── saml
│ │ ├── certs
│ │ │ └── README
│ │ ├── advanced_settings.json
│ │ └── settings.json
│ ├── __init__.py
│ ├── tests.py
│ └── templates
│ │ ├── attrs.jinja2
│ │ ├── index.jinja2
│ │ └── layout.jinja2
├── MANIFEST.in
├── .gitignore
├── README.txt
├── production.ini
├── development.ini
└── setup.py
├── .flake8
├── .github
├── FUNDING.yml
└── workflows
│ └── python-package.yml
├── docs
├── saml2
│ ├── objects.inv
│ ├── _static
│ │ ├── file.png
│ │ ├── minus.png
│ │ ├── plus.png
│ │ ├── css
│ │ │ ├── fonts
│ │ │ │ ├── lato-bold.woff
│ │ │ │ ├── lato-bold.woff2
│ │ │ │ ├── lato-normal.woff
│ │ │ │ ├── lato-normal.woff2
│ │ │ │ ├── Roboto-Slab-Bold.woff
│ │ │ │ ├── lato-bold-italic.woff
│ │ │ │ ├── Roboto-Slab-Bold.woff2
│ │ │ │ ├── Roboto-Slab-Regular.woff
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ ├── lato-bold-italic.woff2
│ │ │ │ ├── lato-normal-italic.woff
│ │ │ │ ├── lato-normal-italic.woff2
│ │ │ │ ├── Roboto-Slab-Regular.woff2
│ │ │ │ └── fontawesome-webfont.woff2
│ │ │ └── badge_only.css
│ │ ├── documentation_options.js
│ │ └── js
│ │ │ ├── badge_only.js
│ │ │ └── html5shiv.min.js
│ └── _sources
│ │ ├── modules.rst.txt
│ │ ├── onelogin.rst.txt
│ │ ├── index.rst.txt
│ │ └── onelogin.saml2.rst.txt
└── SAML_Python3_Toolkit_Guide.pdf
├── .gitignore
├── src
└── onelogin
│ ├── __init__.py
│ └── saml2
│ ├── __init__.py
│ ├── schemas
│ ├── sstc-saml-attribute-ext.xsd
│ ├── saml-schema-authn-context-2.0.xsd
│ ├── sstc-metadata-attr.xsd
│ ├── sstc-saml-metadata-algsupport-v1.0.xsd
│ └── sstc-saml-metadata-ui-v1.0.xsd
│ └── compat.py
├── Makefile
├── LICENSE
└── pyproject.toml
/tests/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/src/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo-django/demo/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/tests/src/OneLogin/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo-flask/requirements.txt:
--------------------------------------------------------------------------------
1 | flask==1.0
2 |
--------------------------------------------------------------------------------
/tests/settings/settings.json:
--------------------------------------------------------------------------------
1 | settings1.json
--------------------------------------------------------------------------------
/tests/src/OneLogin/saml2_tests/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/demo-tornado/requirements.txt:
--------------------------------------------------------------------------------
1 | tornado==6.4.1
2 |
--------------------------------------------------------------------------------
/demo-django/requirements.txt:
--------------------------------------------------------------------------------
1 | Django==4.1.13
2 | python3-saml
3 |
--------------------------------------------------------------------------------
/demo_pyramid/CHANGES.txt:
--------------------------------------------------------------------------------
1 | 0.0
2 | ---
3 |
4 | - Initial version.
5 |
--------------------------------------------------------------------------------
/tests/data/customPath/settings.json:
--------------------------------------------------------------------------------
1 | ../../settings/settings1.json
--------------------------------------------------------------------------------
/demo_pyramid/.coveragerc:
--------------------------------------------------------------------------------
1 | [run]
2 | source = demo_pyramid
3 | omit = demo_pyramid/test*
4 |
--------------------------------------------------------------------------------
/demo_pyramid/pytest.ini:
--------------------------------------------------------------------------------
1 | [pytest]
2 | testpaths = demo_pyramid
3 | python_files = *.py
4 |
--------------------------------------------------------------------------------
/.flake8:
--------------------------------------------------------------------------------
1 | [flake8]
2 | ignore = E731,W503,W504,E501
3 | max-complexity = 50
4 | max-line-length = 200
5 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [SAML-Toolkits]
4 |
--------------------------------------------------------------------------------
/docs/saml2/objects.inv:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/objects.inv
--------------------------------------------------------------------------------
/docs/saml2/_static/file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/file.png
--------------------------------------------------------------------------------
/docs/saml2/_static/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/minus.png
--------------------------------------------------------------------------------
/docs/saml2/_static/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/plus.png
--------------------------------------------------------------------------------
/docs/saml2/_sources/modules.rst.txt:
--------------------------------------------------------------------------------
1 | onelogin
2 | ========
3 |
4 | .. toctree::
5 | :maxdepth: 4
6 |
7 | onelogin
8 |
--------------------------------------------------------------------------------
/docs/SAML_Python3_Toolkit_Guide.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/SAML_Python3_Toolkit_Guide.pdf
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-bold.woff
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/static/pyramid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/demo_pyramid/demo_pyramid/static/pyramid.png
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-bold.woff2
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-normal.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-normal.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-normal.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-normal.woff2
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/static/pyramid-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/demo_pyramid/demo_pyramid/static/pyramid-16x16.png
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/Roboto-Slab-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/Roboto-Slab-Bold.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-bold-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-bold-italic.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/Roboto-Slab-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/Roboto-Slab-Bold.woff2
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/Roboto-Slab-Regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/Roboto-Slab-Regular.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-bold-italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-bold-italic.woff2
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-normal-italic.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-normal-italic.woff
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/lato-normal-italic.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/lato-normal-italic.woff2
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/Roboto-Slab-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/Roboto-Slab-Regular.woff2
--------------------------------------------------------------------------------
/docs/saml2/_static/css/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SAML-Toolkits/python3-saml/HEAD/docs/saml2/_static/css/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/demo_pyramid/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include *.txt *.ini *.cfg *.rst
2 | recursive-include demo_pyramid *.ico *.png *.css *.gif *.jpg *.pt *.txt *.mak *.mako *.js *.html *.xml *.jinja2
3 |
--------------------------------------------------------------------------------
/demo-tornado/Settings.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | BASE_DIR = os.path.dirname(__file__)
4 |
5 | SAML_PATH = os.path.join(BASE_DIR, "saml")
6 | TEMPLATE_PATH = os.path.join(BASE_DIR, "templates")
7 |
--------------------------------------------------------------------------------
/demo-tornado/README.md:
--------------------------------------------------------------------------------
1 | # Tornado Demo #
2 | Fully-working tornado-demo.
3 |
4 | ### About issues ###
5 | This is only a demo, some issues about session still remain.
6 | Actually the session is global.
7 |
8 | ### Production ###
9 | Remember to disable debugging in production.
10 |
--------------------------------------------------------------------------------
/demo_pyramid/.gitignore:
--------------------------------------------------------------------------------
1 | *.egg
2 | *.egg-info
3 | *.pyc
4 | *$py.class
5 | *~
6 | .coverage
7 | coverage.xml
8 | build/
9 | dist/
10 | .tox/
11 | nosetests.xml
12 | env*/
13 | tmp/
14 | Data.fs*
15 | *.sublime-project
16 | *.sublime-workspace
17 | .*.sw?
18 | .sw?
19 | .DS_Store
20 | coverage
21 | test
22 |
--------------------------------------------------------------------------------
/demo-django/manage.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 |
5 | if __name__ == "__main__":
6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
7 |
8 | from django.core.management import execute_from_command_line
9 |
10 | execute_from_command_line(sys.argv)
11 |
--------------------------------------------------------------------------------
/docs/saml2/_sources/onelogin.rst.txt:
--------------------------------------------------------------------------------
1 | onelogin package
2 | ================
3 |
4 | Subpackages
5 | -----------
6 |
7 | .. toctree::
8 | :maxdepth: 4
9 |
10 | onelogin.saml2
11 |
12 | Module contents
13 | ---------------
14 |
15 | .. automodule:: onelogin
16 | :members:
17 | :undoc-members:
18 | :show-inheritance:
19 |
--------------------------------------------------------------------------------
/demo-django/demo/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import re_path
2 | from django.contrib import admin
3 | from .views import attrs, index, metadata
4 |
5 | admin.autodiscover()
6 |
7 | urlpatterns = [
8 | re_path(r"^$", index, name="index"),
9 | re_path(r"^attrs/$", attrs, name="attrs"),
10 | re_path(r"^metadata/$", metadata, name="metadata"),
11 | ]
12 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/invalids/no_status.xml.base64:
--------------------------------------------------------------------------------
1 | fZLBasMwDIbvfYqSexM7TkxtmsKgYxS6Fraywy7FseU1kNgmcqCPvy7bWBnLdLJk+ft/Ia9QdW2QO//mh/gEGLxDmF+61qEcr6pk6J30ChuUTnWAMmr5fPe4k3lKZOh99Nq3yWz+Z/yA/ucoROhj490UaLupkpMVAJzWRpjacsYJt0oJBaympCyWpqwZL7mtl6WYwrxAj1eVKrmKTkohDrB1GJWL10ZC2YLmC0qOpJBMSEZfp15uAGPjVBwVzjEGmWUYB2tT7bsMnAm+cRFvTthiGs5h0or7XsnRV8lhf787PGz3p5yWy0JrY5VWjCtalAqEIEWRG20Ery1wQksKU9j1WF99rEWO0/brL7eNCSlcVBdaGD2vstum2Wf6+7us3wE=
2 |
--------------------------------------------------------------------------------
/tests/src/OneLogin/saml2_tests/error_test.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 |
4 | import unittest
5 | from onelogin.saml2.errors import OneLogin_Saml2_Error
6 |
7 |
8 | class OneLogin_Saml2_Error_Test(unittest.TestCase):
9 | """
10 | Tests the OneLogin_Saml2_Error Constructor.
11 | """
12 |
13 | def runTest(self):
14 | exception = OneLogin_Saml2_Error("test")
15 | self.assertEqual(str(exception), "test")
16 |
--------------------------------------------------------------------------------
/demo-flask/saml/certs/README:
--------------------------------------------------------------------------------
1 | Take care of this folder that could contain private key. Be sure that this folder never is published.
2 |
3 | SAML Python Toolkit expects that certs for the SP could be stored in this folder as:
4 |
5 | * sp.key Private Key
6 | * sp.crt Public cert
7 | * sp_new.crt Future Public cert
8 |
9 |
10 | Also you can use other cert to sign the metadata of the SP using the:
11 |
12 | * metadata.key
13 | * metadata.crt
14 |
--------------------------------------------------------------------------------
/demo-django/saml/certs/README:
--------------------------------------------------------------------------------
1 | Take care of this folder that could contain private key. Be sure that this folder never is published.
2 |
3 | SAML Python Toolkit expects that certs for the SP could be stored in this folder as:
4 |
5 | * sp.key Private Key
6 | * sp.crt Public cert
7 | * sp_new.crt Future Public cert
8 |
9 |
10 | Also you can use other cert to sign the metadata of the SP using the:
11 |
12 | * metadata.key
13 | * metadata.crt
14 |
--------------------------------------------------------------------------------
/demo-tornado/saml/certs/README:
--------------------------------------------------------------------------------
1 | Take care of this folder that could contain private key. Be sure that this folder never is published.
2 |
3 | SAML Python Toolkit expects that certs for the SP could be stored in this folder as:
4 |
5 | * sp.key Private Key
6 | * sp.crt Public cert
7 | * sp_new.crt Future Public cert
8 |
9 |
10 | Also you can use other cert to sign the metadata of the SP using the:
11 |
12 | * metadata.key
13 | * metadata.crt
14 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/saml/certs/README:
--------------------------------------------------------------------------------
1 | Take care of this folder that could contain private key. Be sure that this folder never is published.
2 |
3 | SAML Python Toolkit expects that certs for the SP could be stored in this folder as:
4 |
5 | * sp.key Private Key
6 | * sp.crt Public cert
7 | * sp_new.crt Future Public cert
8 |
9 |
10 | Also you can use other cert to sign the metadata of the SP using the:
11 |
12 | * metadata.key
13 | * metadata.crt
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | .#*
3 | ## the next line needs to start with a backslash to avoid looking like
4 | ## a comment
5 | \#*#
6 | *.pyc
7 | *.pyo
8 | .*.swp
9 |
10 | __pycache_
11 | /parts
12 | /.installed.cfg
13 | /develop-eggs
14 | /*.eg
15 | *.egg-info
16 | /eggs
17 | /.eggs
18 | /build
19 | /dist
20 | /venv
21 | .coverage
22 | .pypirc
23 | /.idea
24 | .mypy_cache/
25 | .pytest_cache
26 | poetry.lock
27 |
28 | *.key
29 | *.crt
30 | *.pem
31 |
32 | settings.py
33 | advanced_settings.py
34 |
--------------------------------------------------------------------------------
/demo-django/demo/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for demo project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "demo.settings")
13 |
14 | from django.core.wsgi import get_wsgi_application # noqa: E402
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/docs/saml2/_sources/index.rst.txt:
--------------------------------------------------------------------------------
1 | .. SAML Python2/3 Toolkit documentation master file, created by
2 | sphinx-quickstart on Sun Oct 1 03:00:42 2023.
3 | You can adapt this file completely to your liking, but it should at least
4 | contain the root `toctree` directive.
5 |
6 | Welcome to SAML Python2/3 Toolkit's documentation!
7 | ==================================================
8 |
9 | .. toctree::
10 | :maxdepth: 4
11 | :caption: Contents:
12 |
13 | onelogin
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/invalids/status_code_responder.xml.base64:
--------------------------------------------------------------------------------
1 | fZJda8IwFIbv9yuk99qkH8EEWxhzDMEpTPFiN5I2J7PQJqEnBX/+XKdTYTVXyfl4n/dwMkPZ1E4s7Zft/AegswZhdGxqg6JPZUHXGmElViiMbACFL8Xm+X0pogkRrrXelrYOnkb/nqvQYx2JCK2vrBkSWsyzYK85AKOF4qrQLGaEaSm5hLigJE2mKi1iljJdTFM+JLODFk+ULDhBB1GIHSwMemn8qZDQeEyjMSVbkoiYi5h+DnXOAX1lpO8JB++dCEP0ndaT0jYhGOVsZTze3LDGiTu4QSvmspKtzYL16nW5flus9hFNp0lZKi1LGTNJk1QC5yRJIlUqzgoNjNCUwpBs3sdnP2sR/bRtfnZbKTeBo2xcDb3nWXhbdG1zYuOl7zD/I9yFX6yC0U7WHTxeO/bV4ndIBW0QnhnhPeTyvv+m+Tc=
2 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/logout_response_deflated.xml.base64:
--------------------------------------------------------------------------------
1 | fZJfa8IwFMXf/RSl77ZJ/wQbbGHMMQSnMMWHvUia3M5Cm4TeFPz4c0Wnwmqekpt7z++EkzmKtrF8Zb5N7z4BrdEI3qltNPLhKvf7TnMjsEauRQvIneTbl48VjwLCbWeckabxJ96/6yb0XEcgQudqo8eElovcP1QZAKOlylRZsZgRVgmRCYhLStJkptIyZimrylmajcnsocMzJffP0FEUYg9LjU5od24kNJ7SaErJjiQ8znhMv8YmF4Cu1sINhKNzlochur6qAmnaELSyptYO73bYYGCPdtSKvkayM7m/Wb+tNu/L9SGi6SyRUlVCipgJmqQCsowkSaSkylhZASM0pTAmWwz1+W8sfHhtV1zc1soGcBKtbWDwPA/vm25jlm+dcD0Wf4SH8qtR4O1F08Pz2HHo5tteSkD0vfCCCB8Z1/PjLy0mPw==
2 |
--------------------------------------------------------------------------------
/docs/saml2/_static/documentation_options.js:
--------------------------------------------------------------------------------
1 | var DOCUMENTATION_OPTIONS = {
2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
3 | VERSION: '1',
4 | LANGUAGE: 'en',
5 | COLLAPSE_INDEX: false,
6 | BUILDER: 'html',
7 | FILE_SUFFIX: '.html',
8 | LINK_SUFFIX: '.html',
9 | HAS_SOURCE: true,
10 | SOURCELINK_SUFFIX: '.txt',
11 | NAVIGATION_WITH_KEYS: false,
12 | SHOW_SEARCH_SUMMARY: true,
13 | ENABLE_SEARCH_SHORTCUTS: true,
14 | };
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request_deflated.xml.base64:
--------------------------------------------------------------------------------
1 | fZJNT4NAEIbvTfofCPfCLh8VNi2NSdWQ1Fat8eDFrMtgSWB3ZRbTny+ltTYG3NNkduaZj3dmi31VWl9QY6Hk3KYOsRfJeDRDXpWardSHaswTfDaAxmojJbLuZ243tWSKY4FM8gqQGcG21/cr5jmE6VoZJVRpj0dW3/sF/c/hiFCbtrEhULqc25v1zWpzl67fPBpGgRBZzgX3p5wGIYc4JkHgZSKLp+85TAkNKQzBXn6W0JYeLIjYQCrRcGnaQEL9CfUmlDyTgPkx8+nrUOay3WAhuekq7IzRzHXRNHnuCFW5IDOtCmnwwsISHb3TQ8Dk6O+UYl1fdXLiFpl2YM8rXUJHn7mXQZd563bn6dLaPhyMx4aXRV5AfW7wL6ivl1tVV9wMC0kd2nmKbJJ3oayRqEEcKmV9wOSsKIVWPEG9GGgeeZ6ISDwlUSstJb4IATxxJThQcZrvOMzhet2e802+AQ==
--------------------------------------------------------------------------------
/tests/data/logout_requests/invalids/not_after_failed.xml.base64:
--------------------------------------------------------------------------------
1 | jVJNT8MwDL1P2n+Yel+b9Is12jpNGqBKYwOGOHBBIXVZpTYJdYr282m7ATu0iJwsx37v2X7z5bEsJp9QYa7kwqI2sZbxeDRHXhaabdS7qs0jfNSAZtJUSmTdz8KqK8kUxxyZ5CUgM4LtV3cb5tqE6UoZJVRhjUeTvvcL9DcOR4TKNMKGgJL1wtptrze722T76tJg5guRZlxwL+TUDzhEEfF9NxVpFL5lEBIaUBgCe/5eQkM9SIhYQyLRcGmaQkK9KXWnlDwRn3kR8+jLUOe62WAuuekYDsZo5jho6iyzhSodkKlWuTR4EWGBtj7oIcCtMju5q1aZgeoshQT/khKf8t2NWTdRFZ8V5am24chLXUCna+5cFl32bZtrJevJ/r4NHmpe5FneChkA6tNyo6qSm2ELUJt2mTydZl0pqyVqEC1T2gcY/3iBQnN2Qd0IaDZzXTEjUUhmjSko8UQA4IorwYGK83ynYVrfOz3Gj78A
--------------------------------------------------------------------------------
/tests/data/logout_responses/logout_response_with_encoding_deflated.xml.base64:
--------------------------------------------------------------------------------
1 | fVLdS8MwEH8X/B9K3tcmaxvWsFbELwZzAzd98EXS5KqFNgm9VPbnO6pjm1jzFO5+X8nd/GrXNsEndFhbkxMWUhKAUVbX5j0nz9v7yYxcFZcXc5Rt48TSvtvePwE6axCCPdegGFo56TsjrMQahZEtoPBKbK4fl2IaUuE6662yDbm8CP48R6X/hSQidH6fdVRpcZuTtyoD4KzUmS4rHnPKKykzCXHJaJrMdFrGPOVVOUuzUZ2Xw5/sbcfNEHtYGPTS+D2SsnjCphNGtzQRcSZi9jpKvQX0tZF+8Pjw3okoQt9XVahsG4HRztbG48kNGwzdhxsPYw6D2dqcrFd3y/XDYvU2ZeksUUpXUsmYS5akErKMJslUK53xsgJOWcpgVLf4bgwrIIYXd8VP4Fq7EHaydQ0MsefRKeiE58TGS99jcTQ5q99YDcGLbHr4f/44oMWmVwoQSRAdTKJfLofC+cYWXw==
2 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/invalids/invalid_issuer.xml.base64:
--------------------------------------------------------------------------------
1 | jZPLboMwEEX3kfIPiH3A5pEGKyGKlLZCSkPbVF10U7lmaJDApoyp8vk1pI8sQhWvrPH43jP2zHx5qErrExoslFzY1CH2Mh6P5sirsmYb9a5a/QgfLaC2TKZE1p8s7LaRTHEskEleATIt2G51t2GeQ1jdKK2EKu3xyDq3/oT+1+GI0GgDNiSUrBd2ur3epLfJ9tWj4SwQIsu54P6U0yDkEEUkCLxMZNH0LYcpoSGFIbHnn0cw1oOGiC0kEjWX2iQS6k+oN6HkiQTMj5hPX4Zurs0LFpLr3mGvdc1cF3Wb545QlQsyq1UhNZ7ssESn3tdDglulU5k2q1xD06GE/oSEF6HEx3j/x6yvqIk7IjRIcOBVXYKzh7JUPRoXAtDQmOS5e3rlVGVr/i5ZW7v7bvPQ8rLIiw7rItlznDeqqbgebg/q0D5SZJO8T2WtxBpE55udE4x/+4SCaQlBvQhoPvM8MSPRlMxMw1DiixDAE1eCAxXf1R5L62bCPTMU8Rc=
2 |
--------------------------------------------------------------------------------
/src/onelogin/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | """
4 |
5 | Add SAML support to your Python softwares using this library.
6 |
7 | SAML Python toolkit let you build a SP (Service Provider)
8 | over your Python application and connect it to any IdP (Identity Provider).
9 |
10 | Supports:
11 |
12 | * SSO and SLO (SP-Initiated and IdP-Initiated).
13 | * Assertion and nameId encryption.
14 | * Assertion signature.
15 | * Message signature: AuthNRequest, LogoutRequest, LogoutResponses.
16 | * Enable an Assertion Consumer Service endpoint.
17 | * Enable a Single Logout Service endpoint.
18 | * Publish the SP metadata (which can be signed).
19 | """
20 |
--------------------------------------------------------------------------------
/demo_pyramid/README.txt:
--------------------------------------------------------------------------------
1 | demo_pyramid
2 | ===============================
3 |
4 | Getting Started
5 | ---------------
6 |
7 | - Change directory into your newly created project.
8 |
9 | cd demo_pyramid
10 |
11 | - Create a Python virtual environment.
12 |
13 | python3 -m venv env
14 |
15 | - Upgrade packaging tools.
16 |
17 | env/bin/pip install --upgrade pip setuptools
18 |
19 | - Install the project in editable mode with its testing requirements.
20 |
21 | env/bin/pip install -e ".[testing]"
22 |
23 | - Run your project's tests.
24 |
25 | env/bin/pytest
26 |
27 | - Run your project.
28 |
29 | env/bin/pserve development.ini
30 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/__init__.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | """
4 |
5 | Add SAML support to your Python softwares using this library.
6 |
7 | SAML Python toolkit let you build a SP (Service Provider)
8 | over your Python application and connect it to any IdP (Identity Provider).
9 |
10 | Supports:
11 |
12 | * SSO and SLO (SP-Initiated and IdP-Initiated).
13 | * Assertion and nameId encryption.
14 | * Assertion signature.
15 | * Message signature: AuthNRequest, LogoutRequest, LogoutResponses.
16 | * Enable an Assertion Consumer Service endpoint.
17 | * Enable a Single Logout Service endpoint.
18 | * Publish the SP metadata (which can be signed).
19 | """
20 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/invalids/no_nameId.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 | https://example.hello.com/access/saml
11 |
12 |
--------------------------------------------------------------------------------
/tests/certs/certificate1:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIBrTCCAaGgAwIBAgIBATADBgEAMGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApD
3 | YWxpZm9ybmlhMRUwEwYDVQQHDAxTYW50YSBNb25pY2ExETAPBgNVBAoMCE9uZUxv
4 | Z2luMRkwFwYDVQQDDBBhcHAub25lbG9naW4uY29tMB4XDTEwMTAxMTIxMTUxMloX
5 | DTE1MTAxMTIxMTUxMlowZzELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3Ju
6 | aWExFTATBgNVBAcMDFNhbnRhIE1vbmljYTERMA8GA1UECgwIT25lTG9naW4xGTAX
7 | BgNVBAMMEGFwcC5vbmVsb2dpbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
8 | AoGBAMPmjfjy7L35oDpeBXBoRVCgktPkLno9DOEWB7MgYMMVKs2B6ymWQLEWrDug
9 | MK1hkzWFhIb5fqWLGbWy0J0veGR9/gHOQG+rD/I36xAXnkdiXXhzoiAG/zQxM0ed
10 | MOUf40n314FC8moErcUg6QabttzesO59HFz6shPuxcWaVAgxAgMBAAEwAwYBAAMB
11 | AA==
12 | -----END CERTIFICATE-----
13 |
--------------------------------------------------------------------------------
/tests/data/customPath/advanced_settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "security": {
3 | "authnRequestsSigned": false,
4 | "wantAssertionsSigned": false,
5 | "signMetadata": false
6 | },
7 | "contactPerson": {
8 | "technical": {
9 | "givenName": "technical_name",
10 | "emailAddress": "technical@example.com"
11 | },
12 | "support": {
13 | "givenName": "support_name",
14 | "emailAddress": "support@example.com"
15 | }
16 | },
17 | "organization": {
18 | "en-US": {
19 | "name": "sp_test",
20 | "displayname": "SP test",
21 | "url": "http://sp.example.com"
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/__init__.py:
--------------------------------------------------------------------------------
1 | from pyramid.config import Configurator
2 | from pyramid.session import SignedCookieSessionFactory
3 |
4 |
5 | session_factory = SignedCookieSessionFactory("onelogindemopytoolkit")
6 |
7 |
8 | def main(global_config, **settings):
9 | """This function returns a Pyramid WSGI application."""
10 | config = Configurator(settings=settings)
11 | config.set_session_factory(session_factory)
12 | config.include("pyramid_jinja2")
13 | config.add_static_view("static", "static", cache_max_age=3600)
14 | config.add_route("index", "/")
15 | config.add_route("attrs", "/attrs/")
16 | config.add_route("metadata", "/metadata/")
17 | config.scan()
18 | return config.make_wsgi_app()
19 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/logout_response.xml:
--------------------------------------------------------------------------------
1 |
9 | http://idp.example.com/
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/status_code_responder.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlDQp4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIg0KQ29uc2VudD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNvbnNlbnQ6dW5zcGVjaWZpZWQiIERlc3RpbmF0aW9uPSINCmh0dHBzOi8vZXhhbXBsZS5jb20vb3BlbnNzby9Db25zdW1lci9tZXRhQWxpYXMvc3AiDQpJRD0iX2E3MWJiZjIyLTkwYTktNGE5Ni1iOWNlLWVhNWJhMzBhZWU2NSINCkluUmVzcG9uc2VUbz0iczIxMjAzYjI3ZDM4ZDBhMDdlYTJjNzEzZTdhMDA0NWNmOGQxZTMyODExIg0KSXNzdWVJbnN0YW50PSIyMDExLTA4LTI0VDE2OjM2OjMwLjM2NVoiIFZlcnNpb249IjIuMCI+PElzc3Vlcg0KeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPg0KaHR0cDovL2lkcC5leGFtcGxlLmNvbS9hZGZzL3NlcnZpY2VzL3RydXN0PC9Jc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZQ0KVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6UmVzcG9uZGVyIi8+PC9zYW1scDpTdGF0dXM+PC9zYW1scDpSZXNwb25zZT4NCg==
2 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 | http://idp.example.com/
10 | ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c
13 |
14 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/logout_response_with_encoding.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 | http://idp.example.com/
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request_with_encoding.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 | http://idp.example.com/
10 | ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c
13 |
14 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/tests.py:
--------------------------------------------------------------------------------
1 | import unittest
2 |
3 | from pyramid import testing
4 |
5 |
6 | class ViewTests(unittest.TestCase):
7 | def setUp(self):
8 | self.config = testing.setUp()
9 |
10 | def tearDown(self):
11 | testing.tearDown()
12 |
13 | def test_my_view(self):
14 | from .views import my_view
15 |
16 | request = testing.DummyRequest()
17 | info = my_view(request)
18 | self.assertEqual(info["project"], "demo_pyramid")
19 |
20 |
21 | class FunctionalTests(unittest.TestCase):
22 | def setUp(self):
23 | from demo_pyramid import main
24 |
25 | app = main({})
26 | from webtest import TestApp
27 |
28 | self.testapp = TestApp(app)
29 |
30 | def test_root(self):
31 | res = self.testapp.get("/", status=200)
32 | self.assertTrue(b"Pyramid" in res.body)
33 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/schemas/sstc-saml-attribute-ext.xsd:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
12 | Document title: SAML V2.0 Attribute Extension Schema
13 | Document identifier: sstc-saml-attribute-ext.xsd
14 | Location: http://www.oasis-open.org/committees/documents.php?wg_abbrev=security
15 | Revision history:
16 | V1.0 (October 2008):
17 | Initial version.
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/invalids/not_after_failed.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 | http://idp.example.com/
11 | ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/status_code_responer_and_msg.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlDQp4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIg0KQ29uc2VudD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNvbnNlbnQ6dW5zcGVjaWZpZWQiIERlc3RpbmF0aW9uPSINCmh0dHBzOi8vZXhhbXBsZS5jb20vb3BlbnNzby9Db25zdW1lci9tZXRhQWxpYXMvc3AiDQpJRD0iX2E3MWJiZjIyLTkwYTktNGE5Ni1iOWNlLWVhNWJhMzBhZWU2NSINCkluUmVzcG9uc2VUbz0iczIxMjAzYjI3ZDM4ZDBhMDdlYTJjNzEzZTdhMDA0NWNmOGQxZTMyODExIg0KSXNzdWVJbnN0YW50PSIyMDExLTA4LTI0VDE2OjM2OjMwLjM2NVoiIFZlcnNpb249IjIuMCI+PElzc3Vlcg0KeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iPg0KaHR0cDovL2lkcC5leGFtcGxlLmNvbS9hZGZzL3NlcnZpY2VzL3RydXN0PC9Jc3N1ZXI+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpSZXNwb25kZXIiLz48c2FtbHA6U3RhdHVzTWVzc2FnZT5zb21ldGhpbmdfaXNfd3Jvbmc8L3NhbWxwOlN0YXR1c01lc3NhZ2U+PC9zYW1scDpTdGF0dXM+PC9zYW1scDpSZXNwb25zZT4=
2 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/schemas/saml-schema-authn-context-2.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 | Document identifier: saml-schema-authn-context-2.0
12 | Location: http://docs.oasis-open.org/security/saml/v2.0/
13 | Revision history:
14 | V2.0 (March, 2005):
15 | New core authentication context schema for SAML V2.0.
16 | This is just an include of all types from the schema
17 | referred to in the include statement below.
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/invalids/invalid_issuer.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 | https://example.hello.com/access/saml
11 | ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request_with_sessionindex.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 | http://idp.example.com/
10 | ONELOGIN_1e442c129e1f822c8096086a1103c5ee2c7cae1c
13 | _ac72a76526cb6ca19f8438e73879a0e6c8ae5131
14 |
15 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | PIP=pip
2 | BLACK=black
3 | FLAKE8=flake8
4 | PYTEST=pytest
5 | COVERAGE=coverage
6 | COVERAGE_CONFIG=tests/coverage.rc
7 | COVERALLS=coveralls
8 | MAIN_SOURCE=src/onelogin/saml2
9 | DEMOS=demo-django demo-flask demo-tornado demo_pyramid
10 | TESTS=tests/src/OneLogin/saml2_tests
11 | SOURCES=$(MAIN_SOURCE) $(DEMOS) $(TESTS)
12 |
13 | install-req:
14 | $(PIP) install .
15 |
16 | install-test:
17 | $(PIP) install -e ".[test]"
18 |
19 | install-lint:
20 | $(PIP) install -e ".[lint]"
21 |
22 | pytest:
23 | $(PYTEST)
24 |
25 | coverage:
26 | $(COVERAGE) run -m $(PYTEST)
27 | $(COVERAGE) report -m
28 |
29 | coveralls:
30 | $(COVERALLS)
31 |
32 | black:
33 | $(BLACK) $(SOURCES)
34 |
35 | flake8:
36 | $(FLAKE8) $(SOURCES)
37 |
38 | clean:
39 | rm -rf .pytest_cache/
40 | rm -rf .eggs/
41 | find . -type d -name "__pycache__" -exec rm -r {} +
42 | find . -type d -name "*.egg-info" -exec rm -r {} +
43 | rm .coverage
44 |
--------------------------------------------------------------------------------
/docs/saml2/_static/js/badge_only.js:
--------------------------------------------------------------------------------
1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}});
--------------------------------------------------------------------------------
/tests/data/misc/sp3.key:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | MIICXgIBAAKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9
3 | IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+
4 | PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQAB
5 | AoGAD4/Z4LWVWV6D1qMIp1Gzr0ZmdWTE1SPdZ7Ej8glGnCzPdguCPuzbhGXmIg0V
6 | J5D+02wsqws1zd48JSMXXM8zkYZVwQYIPUsNn5FetQpwxDIMPmhHg+QNBgwOnk8J
7 | K2sIjjLPL7qY7Itv7LT7Gvm5qSOkZ33RCgXcgz+okEIQMYkCQQDzbTOyDL0c5WQV
8 | 6A2k06T/azdhUdGXF9C0+WkWSfNaovmTgRXh1G+jMlr82Snz4p4/STt7P/XtyWzF
9 | 3pkVgZr3AkEA7nPjXwHlttNEMo6AtxHd47nizK2NUN803ElIUT8P9KSCoERmSXq6
10 | 6PDekGNic4ldpsSvOeYCk8MAYoDBy9kvVwJBAMLgX4xg6lzhv7hR5+pWjTb1rIY6
11 | rCHbrPfU264+UZXz9v2BT/VUznLF81WMvStD9xAPHpFS6R0OLghSZhdzhI0CQQDL
12 | 8Duvfxzrn4b9QlmduV8wLERoT6rEVxKLsPVz316TGrxJvBZLk/cV0SRZE1cZf4uk
13 | XSWMfEcJ/0Zt+LdG1CqjAkEAqwLSglJ9Dy3HpgMz4vAAyZWzAxvyA1zW0no9GOLc
14 | PQnYaNUN/Fy2SYtETXTb0CQ9X1rt8ffkFP7ya+5TC83aCg==
15 | -----END RSA PRIVATE KEY-----
16 |
--------------------------------------------------------------------------------
/tests/data/metadata/no_expiration_mark_metadata.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
7 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/tests/data/customPath/certs/sp.key:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | MIICXgIBAAKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9
3 | IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+
4 | PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQAB
5 | AoGAD4/Z4LWVWV6D1qMIp1Gzr0ZmdWTE1SPdZ7Ej8glGnCzPdguCPuzbhGXmIg0V
6 | J5D+02wsqws1zd48JSMXXM8zkYZVwQYIPUsNn5FetQpwxDIMPmhHg+QNBgwOnk8J
7 | K2sIjjLPL7qY7Itv7LT7Gvm5qSOkZ33RCgXcgz+okEIQMYkCQQDzbTOyDL0c5WQV
8 | 6A2k06T/azdhUdGXF9C0+WkWSfNaovmTgRXh1G+jMlr82Snz4p4/STt7P/XtyWzF
9 | 3pkVgZr3AkEA7nPjXwHlttNEMo6AtxHd47nizK2NUN803ElIUT8P9KSCoERmSXq6
10 | 6PDekGNic4ldpsSvOeYCk8MAYoDBy9kvVwJBAMLgX4xg6lzhv7hR5+pWjTb1rIY6
11 | rCHbrPfU264+UZXz9v2BT/VUznLF81WMvStD9xAPHpFS6R0OLghSZhdzhI0CQQDL
12 | 8Duvfxzrn4b9QlmduV8wLERoT6rEVxKLsPVz316TGrxJvBZLk/cV0SRZE1cZf4uk
13 | XSWMfEcJ/0Zt+LdG1CqjAkEAqwLSglJ9Dy3HpgMz4vAAyZWzAxvyA1zW0no9GOLc
14 | PQnYaNUN/Fy2SYtETXTb0CQ9X1rt8ffkFP7ya+5TC83aMg==
15 | -----END RSA PRIVATE KEY-----
16 |
--------------------------------------------------------------------------------
/tests/data/customPath/certs/metadata.key:
--------------------------------------------------------------------------------
1 | -----BEGIN RSA PRIVATE KEY-----
2 | MIICXgIBAAKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9
3 | IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+
4 | PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQAB
5 | AoGAD4/Z4LWVWV6D1qMIp1Gzr0ZmdWTE1SPdZ7Ej8glGnCzPdguCPuzbhGXmIg0V
6 | J5D+02wsqws1zd48JSMXXM8zkYZVwQYIPUsNn5FetQpwxDIMPmhHg+QNBgwOnk8J
7 | K2sIjjLPL7qY7Itv7LT7Gvm5qSOkZ33RCgXcgz+okEIQMYkCQQDzbTOyDL0c5WQV
8 | 6A2k06T/azdhUdGXF9C0+WkWSfNaovmTgRXh1G+jMlr82Snz4p4/STt7P/XtyWzF
9 | 3pkVgZr3AkEA7nPjXwHlttNEMo6AtxHd47nizK2NUN803ElIUT8P9KSCoERmSXq6
10 | 6PDekGNic4ldpsSvOeYCk8MAYoDBy9kvVwJBAMLgX4xg6lzhv7hR5+pWjTb1rIY6
11 | rCHbrPfU264+UZXz9v2BT/VUznLF81WMvStD9xAPHpFS6R0OLghSZhdzhI0CQQDL
12 | 8Duvfxzrn4b9QlmduV8wLERoT6rEVxKLsPVz316TGrxJvBZLk/cV0SRZE1cZf4uk
13 | XSWMfEcJ/0Zt+LdG1CqjAkEAqwLSglJ9Dy3HpgMz4vAAyZWzAxvyA1zW0no9GOLc
14 | PQnYaNUN/Fy2SYtETXTb0CQ9X1rt8ffkFP7ya+5TC83aMg==
15 | -----END RSA PRIVATE KEY-----
16 |
--------------------------------------------------------------------------------
/tests/data/logout_responses/logout_response.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOkxvZ291dFJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiDQogICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiINCiAgICAgICAgICAgICAgICAgICAgICBJRD0iX2Y5ZWU2MWJkOWRiZjYzNjA2ZmFhOWFlM2IxMDU0OGQ1YjM2NTZmYjg1OSINCiAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uPSIyLjAiDQogICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDEzLTEyLTEwVDA0OjM5OjMxWiINCiAgICAgICAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL3Nscy5waHAiDQogICAgICAgICAgICAgICAgICAgICAgSW5SZXNwb25zZVRvPSJPTkVMT0dJTl8yMTU4NGNjZGZhY2EzNmExNDVhZTk5MDQ0MmRjZDk2YmZlNjAxNTFlIg0KICAgICAgICAgICAgICAgICAgICAgID4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPg0KICAgIDxzYW1scDpTdGF0dXM+DQogICAgICAgIDxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiIC8+DQogICAgPC9zYW1scDpTdGF0dXM+DQo8L3NhbWxwOkxvZ291dFJlc3BvbnNlPg==
2 |
--------------------------------------------------------------------------------
/demo-flask/templates/attrs.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if paint_logout %}
6 | {% if attributes %}
7 |
You have the following attributes:
8 |
9 |
10 | | Name | Values |
11 |
12 |
13 | {% for attr in attributes %}
14 | | {{ attr.0 }} |
15 |
16 | {% for val in attr.1 %}
17 | - {{ val }}
18 | {% endfor %}
19 | |
20 | {% endfor %}
21 |
22 |
23 | {% else %}
24 | You don't have any attributes
25 | {% endif %}
26 | Logout
27 | {% else %}
28 | Login and access again to this page
29 | {% endif %}
30 |
31 | {% endblock %}
32 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/templates/attrs.jinja2:
--------------------------------------------------------------------------------
1 | {% extends "layout.jinja2" %}
2 |
3 | {% block content %}
4 |
5 | {% if paint_logout %}
6 | {% if attributes %}
7 | You have the following attributes:
8 |
9 |
10 | | Name | Values |
11 |
12 |
13 | {% for attr in attributes %}
14 | | {{ attr.0 }} |
15 |
16 | {% for val in attr.1 %}
17 | - {{ val }}
18 | {% endfor %}
19 | |
20 | {% endfor %}
21 |
22 |
23 | {% else %}
24 | You don't have any attributes
25 | {% endif %}
26 | Logout
27 | {% else %}
28 | Login and access again to this page
29 | {% endif %}
30 |
31 | {% endblock %}
32 |
--------------------------------------------------------------------------------
/tests/data/misc/sp2.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAOK9uFHs/nXrH9Lc
3 | GorG6lB7Qs42iWK6mIE56wI7dIdsOuXf6r0ht+d+YTTis24xw+wjEHXrVN0Okh6w
4 | sKftzxo8chIo60+UB5NlKdvxAC7tpGNmrf49us/m5bdNx8IY+0pPK0c6B786Uluj
5 | Tvx1WFdDXh3UQPBclbWtFe5S3gLxAgMBAAECgYAPj9ngtZVZXoPWowinUbOvRmZ1
6 | ZMTVI91nsSPyCUacLM92C4I+7NuEZeYiDRUnkP7TbCyrCzXN3jwlIxdczzORhlXB
7 | Bgg9Sw2fkV61CnDEMgw+aEeD5A0GDA6eTwkrawiOMs8vupjsi2/stPsa+bmpI6Rn
8 | fdEKBdyDP6iQQhAxiQJBAPNtM7IMvRzlZBXoDaTTpP9rN2FR0ZcX0LT5aRZJ81qi
9 | +ZOBFeHUb6MyWvzZKfPinj9JO3s/9e3JbMXemRWBmvcCQQDuc+NfAeW200QyjoC3
10 | Ed3jueLMrY1Q3zTcSUhRPw/0pIKgRGZJerro8N6QY2JziV2mxK855gKTwwBigMHL
11 | 2S9XAkEAwuBfjGDqXOG/uFHn6laNNvWshjqsIdus99Tbrj5RlfP2/YFP9VTOcsXz
12 | VYy9K0P3EA8ekVLpHQ4uCFJmF3OEjQJBAMvwO69/HOufhv1CWZ25XzAsRGhPqsRX
13 | Eouw9XPfXpMavEm8FkuT9xXRJFkTVxl/i6RdJYx8Rwn/Rm34t0bUKqMCQQCrAtKC
14 | Un0PLcemAzPi8ADJlbMDG/IDXNbSej0Y4tw9Cdho1Q38XLZJi0RNdNvQJD1fWu3x
15 | 9+QU/vJr7lMLzdoy
16 | -----END PRIVATE KEY-----
17 |
--------------------------------------------------------------------------------
/demo-tornado/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | A Python SAML Toolkit demo
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
A Python SAML Toolkit demo
22 |
23 | {% block content %}{% end %}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/tests/data/customPath/certs/idp.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMC
3 | Tk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYD
4 | VQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG
5 | 9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4
6 | MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xi
7 | ZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2Zl
8 | aWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5v
9 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LO
10 | NoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHIS
11 | KOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d
12 | 1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8
13 | BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7n
14 | bK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2Qar
15 | Q4/67OZfHd7R+POBXhophSMv1ZOo
16 | -----END CERTIFICATE-----
--------------------------------------------------------------------------------
/demo-django/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | A Python SAML Toolkit demo
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
A Python SAML Toolkit demo
22 |
23 | {% block content %}{% endblock %}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/demo-flask/templates/base.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | A Python SAML Toolkit demo
9 |
10 |
11 |
12 |
13 |
14 |
18 |
19 |
20 |
21 |
A Python SAML Toolkit demo
22 |
23 | {% block content %}{% endblock %}
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/tests/data/customPath/certs/sp.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMC
3 | Tk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYD
4 | VQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG
5 | 9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4
6 | MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xi
7 | ZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2Zl
8 | aWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5v
9 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LO
10 | NoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHIS
11 | KOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d
12 | 1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8
13 | BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7n
14 | bK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2Qar
15 | Q4/67OZfHd7R+POBXhophSMv1ZOo
16 | -----END CERTIFICATE-----
17 |
--------------------------------------------------------------------------------
/demo-django/templates/attrs.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if paint_logout %}
6 | {% if attributes %}
7 | You have the following attributes:
8 |
9 |
10 | | Name | Values |
11 |
12 |
13 | {% for attr in attributes %}
14 | | {{ attr.0 }} |
15 |
16 | {% for val in attr.1 %}
17 | - {{ val }}
18 | {% endfor %}
19 | |
20 | {% endfor %}
21 |
22 |
23 | {% else %}
24 | You don't have any attributes
25 | {% endif %}
26 | Logout
27 | {% else %}
28 | Login and access again to this page
29 | {% endif %}
30 |
31 | {% endblock %}
32 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6TG9nb3V0UmVxdWVzdCB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIg0KICAgICAgICAgICAgICAgICAgICAgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiINCiAgICAgICAgICAgICAgICAgICAgIElEPSJPTkVMT0dJTl8yMTU4NGNjZGZhY2EzNmExNDVhZTk5MDQ0MmRjZDk2YmZlNjAxNTFlIg0KICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbj0iMi4wIg0KICAgICAgICAgICAgICAgICAgICAgSXNzdWVJbnN0YW50PSIyMDEzLTEyLTEwVDA0OjM5OjMxWiINCiAgICAgICAgICAgICAgICAgICAgIERlc3RpbmF0aW9uPSJodHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9lbmRwb2ludHMvc2xzLnBocCINCiAgICAgICAgICAgICAgICAgICAgID4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPg0KICAgIDxzYW1sOk5hbWVJRCBTUE5hbWVRdWFsaWZpZXI9Imh0dHA6Ly9pZHAuZXhhbXBsZS5jb20vIg0KICAgICAgICAgICAgICAgICBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OnVuc3BlY2lmaWVkIg0KICAgICAgICAgICAgICAgICA+T05FTE9HSU5fMWU0NDJjMTI5ZTFmODIyYzgwOTYwODZhMTEwM2M1ZWUyYzdjYWUxYzwvc2FtbDpOYW1lSUQ+DQo8L3NhbWxwOkxvZ291dFJlcXVlc3Q+
--------------------------------------------------------------------------------
/tests/data/customPath/certs/Test_Root_CA.crt:
--------------------------------------------------------------------------------
1 | ----- Begin Certificate -----
2 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhM
3 | CTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDg
4 | YDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqh
5 | kiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0w
6 | NzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyB
7 | Tb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBA
8 | MTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZ
9 | XR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqK
10 | xupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLC
11 | n7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo0
12 | 78dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVf
13 | p86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFD
14 | bStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJV
15 | hTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo
16 | -----END CERTIFICATE-----
--------------------------------------------------------------------------------
/tests/data/customPath/certs/metadata.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMC
3 | Tk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYD
4 | VQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG
5 | 9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4
6 | MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xi
7 | ZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2Zl
8 | aWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5v
9 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LO
10 | NoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHIS
11 | KOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d
12 | 1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8
13 | BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7n
14 | bK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2Qar
15 | Q4/67OZfHd7R+POBXhophSMv1ZOo
16 | -----END CERTIFICATE-----
17 |
--------------------------------------------------------------------------------
/tests/data/requests/authn_request.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | http://idp.example.com/metadata
4 |
5 |
6 |
7 |
8 | urn:oasis:names:tc:SAML:2.0:ac:classes:Password
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/tests/data/metadata/metadata_settings1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
9 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
10 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/metadata/unparsed_metadata.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
9 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
10 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tests/data/metadata/metadata_bad_order_settings1.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
8 |
11 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/demo-tornado/templates/attrs.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if paint_logout %}
6 | {% if attributes %}
7 | You have the following attributes:
8 |
9 |
10 | | Name | Values |
11 |
12 |
13 | {% for attr, i in attributes %}
14 | {% if i == 0 %}
15 | | {{ attr }} |
16 |
17 | {% end %}
18 | {% if i == 1 %}
19 | {% for val in attr %}
20 | - {{ val }}
21 | {% end %}
22 | {% end %}
23 | |
24 | {% end %}
25 |
26 |
27 | {% else %}
28 | You don't have any attributes
29 | {% end %}
30 | Logout
31 | {% else %}
32 | Login and access again to this page
33 | {% end %}
34 |
35 | {% end %}
36 |
--------------------------------------------------------------------------------
/demo_pyramid/production.ini:
--------------------------------------------------------------------------------
1 | ###
2 | # app configuration
3 | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
4 | ###
5 |
6 | [app:main]
7 | use = egg:demo_pyramid
8 |
9 | pyramid.reload_templates = false
10 | pyramid.debug_authorization = false
11 | pyramid.debug_notfound = false
12 | pyramid.debug_routematch = false
13 | pyramid.default_locale_name = en
14 |
15 | ###
16 | # wsgi server configuration
17 | ###
18 |
19 | [server:main]
20 | use = egg:waitress#main
21 | listen = *:6543
22 |
23 | ###
24 | # logging configuration
25 | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
26 | ###
27 |
28 | [loggers]
29 | keys = root, demo_pyramid
30 |
31 | [handlers]
32 | keys = console
33 |
34 | [formatters]
35 | keys = generic
36 |
37 | [logger_root]
38 | level = WARN
39 | handlers = console
40 |
41 | [logger_demo_pyramid]
42 | level = WARN
43 | handlers =
44 | qualname = demo_pyramid
45 |
46 | [handler_console]
47 | class = StreamHandler
48 | args = (sys.stderr,)
49 | level = NOTSET
50 | formatter = generic
51 |
52 | [formatter_generic]
53 | format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
54 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2010-2022 OneLogin, Inc.
2 | Copyright (c) 2023 IAM Digital Services, SL.
3 |
4 | Permission is hereby granted, free of charge, to any person
5 | obtaining a copy of this software and associated documentation
6 | files (the "Software"), to deal in the Software without
7 | restriction, including without limitation the rights to use,
8 | copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the
10 | Software is furnished to do so, subject to the following
11 | conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23 | OTHER DEALINGS IN THE SOFTWARE.
24 |
25 |
--------------------------------------------------------------------------------
/demo-django/saml/advanced_settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "security": {
3 | "nameIdEncrypted": false,
4 | "authnRequestsSigned": false,
5 | "logoutRequestSigned": false,
6 | "logoutResponseSigned": false,
7 | "signMetadata": false,
8 | "wantMessagesSigned": false,
9 | "wantAssertionsSigned": false,
10 | "wantNameId" : true,
11 | "wantNameIdEncrypted": false,
12 | "wantAssertionsEncrypted": false,
13 | "allowSingleLabelDomains": false,
14 | "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
15 | "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
16 | "rejectDeprecatedAlgorithm": true
17 | },
18 | "contactPerson": {
19 | "technical": {
20 | "givenName": "technical_name",
21 | "emailAddress": "technical@example.com"
22 | },
23 | "support": {
24 | "givenName": "support_name",
25 | "emailAddress": "support@example.com"
26 | }
27 | },
28 | "organization": {
29 | "en-US": {
30 | "name": "sp_test",
31 | "displayname": "SP test",
32 | "url": "http://sp.example.com"
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/demo-flask/saml/advanced_settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "security": {
3 | "nameIdEncrypted": false,
4 | "authnRequestsSigned": false,
5 | "logoutRequestSigned": false,
6 | "logoutResponseSigned": false,
7 | "signMetadata": false,
8 | "wantMessagesSigned": false,
9 | "wantAssertionsSigned": false,
10 | "wantNameId" : true,
11 | "wantNameIdEncrypted": false,
12 | "wantAssertionsEncrypted": false,
13 | "allowSingleLabelDomains": false,
14 | "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
15 | "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
16 | "rejectDeprecatedAlgorithm": true
17 | },
18 | "contactPerson": {
19 | "technical": {
20 | "givenName": "technical_name",
21 | "emailAddress": "technical@example.com"
22 | },
23 | "support": {
24 | "givenName": "support_name",
25 | "emailAddress": "support@example.com"
26 | }
27 | },
28 | "organization": {
29 | "en-US": {
30 | "name": "sp_test",
31 | "displayname": "SP test",
32 | "url": "http://sp.example.com"
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/demo-tornado/saml/advanced_settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "security": {
3 | "nameIdEncrypted": false,
4 | "authnRequestsSigned": false,
5 | "logoutRequestSigned": false,
6 | "logoutResponseSigned": false,
7 | "signMetadata": false,
8 | "wantMessagesSigned": false,
9 | "wantAssertionsSigned": false,
10 | "wantNameId" : true,
11 | "wantNameIdEncrypted": false,
12 | "wantAssertionsEncrypted": false,
13 | "allowSingleLabelDomains": false,
14 | "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
15 | "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
16 | "rejectDeprecatedAlgorithm": true
17 | },
18 | "contactPerson": {
19 | "technical": {
20 | "givenName": "technical_name",
21 | "emailAddress": "technical@example.com"
22 | },
23 | "support": {
24 | "givenName": "support_name",
25 | "emailAddress": "support@example.com"
26 | }
27 | },
28 | "organization": {
29 | "en-US": {
30 | "name": "sp_test",
31 | "displayname": "SP test",
32 | "url": "http://sp.example.com"
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/saml/advanced_settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "security": {
3 | "nameIdEncrypted": false,
4 | "authnRequestsSigned": false,
5 | "logoutRequestSigned": false,
6 | "logoutResponseSigned": false,
7 | "signMetadata": false,
8 | "wantMessagesSigned": false,
9 | "wantAssertionsSigned": false,
10 | "wantNameId" : true,
11 | "wantNameIdEncrypted": false,
12 | "wantAssertionsEncrypted": false,
13 | "allowSingleLabelDomains": false,
14 | "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
15 | "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256",
16 | "rejectDeprecatedAlgorithm": true
17 | },
18 | "contactPerson": {
19 | "technical": {
20 | "givenName": "technical_name",
21 | "emailAddress": "technical@example.com"
22 | },
23 | "support": {
24 | "givenName": "support_name",
25 | "emailAddress": "support@example.com"
26 | }
27 | },
28 | "organization": {
29 | "en-US": {
30 | "name": "sp_test",
31 | "displayname": "SP test",
32 | "url": "http://sp.example.com"
33 | }
34 | }
35 | }
--------------------------------------------------------------------------------
/demo-django/saml/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": true,
3 | "debug": true,
4 | "sp": {
5 | "entityId": "https:///metadata/",
6 | "assertionConsumerService": {
7 | "url": "https:///?acs",
8 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
9 | },
10 | "singleLogoutService": {
11 | "url": "https:///?sls",
12 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
13 | },
14 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
15 | "x509cert": "",
16 | "privateKey": ""
17 | },
18 | "idp": {
19 | "entityId": "https://app.onelogin.com/saml/metadata/",
20 | "singleSignOnService": {
21 | "url": "https://app.onelogin.com/trust/saml2/http-post/sso/",
22 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
23 | },
24 | "singleLogoutService": {
25 | "url": "https://app.onelogin.com/trust/saml2/http-redirect/slo/",
26 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
27 | },
28 | "x509cert": ""
29 | }
30 | }
--------------------------------------------------------------------------------
/demo-tornado/saml/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": true,
3 | "debug": true,
4 | "sp": {
5 | "entityId": "https:///metadata/",
6 | "assertionConsumerService": {
7 | "url": "https:///?acs",
8 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
9 | },
10 | "singleLogoutService": {
11 | "url": "https:///?sls",
12 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
13 | },
14 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
15 | "x509cert": "",
16 | "privateKey": ""
17 | },
18 | "idp": {
19 | "entityId": "https://app.onelogin.com/saml/metadata/",
20 | "singleSignOnService": {
21 | "url": "https://app.onelogin.com/trust/saml2/http-post/sso/",
22 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
23 | },
24 | "singleLogoutService": {
25 | "url": "https://app.onelogin.com/trust/saml2/http-redirect/slo/",
26 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
27 | },
28 | "x509cert": ""
29 | }
30 | }
--------------------------------------------------------------------------------
/demo-flask/saml/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": true,
3 | "debug": true,
4 | "sp": {
5 | "entityId": "https:///metadata/",
6 | "assertionConsumerService": {
7 | "url": "https:///?acs",
8 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
9 | },
10 | "singleLogoutService": {
11 | "url": "https:///?sls",
12 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
13 | },
14 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
15 | "x509cert": "",
16 | "privateKey": ""
17 | },
18 | "idp": {
19 | "entityId": "https://app.onelogin.com/saml/metadata/",
20 | "singleSignOnService": {
21 | "url": "https://app.onelogin.com/trust/saml2/http-post/sso/",
22 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
23 | },
24 | "singleLogoutService": {
25 | "url": "https://app.onelogin.com/trust/saml2/http-redirect/slo/",
26 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
27 | },
28 | "x509cert": ""
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/saml/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": true,
3 | "debug": true,
4 | "sp": {
5 | "entityId": "https:///metadata/",
6 | "assertionConsumerService": {
7 | "url": "https:///?acs",
8 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
9 | },
10 | "singleLogoutService": {
11 | "url": "https:///?sls",
12 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
13 | },
14 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
15 | "x509cert": "",
16 | "privateKey": ""
17 | },
18 | "idp": {
19 | "entityId": "https://app.onelogin.com/saml/metadata/",
20 | "singleSignOnService": {
21 | "url": "https://app.onelogin.com/trust/saml2/http-post/sso/",
22 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
23 | },
24 | "singleLogoutService": {
25 | "url": "https://app.onelogin.com/trust/saml2/http-redirect/slo/",
26 | "binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
27 | },
28 | "x509cert": ""
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/schemas/sstc-metadata-attr.xsd:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 | Document title: SAML V2.0 Metadata Extention for Entity Attributes Schema
15 | Document identifier: sstc-metadata-attr.xsd
16 | Location: http://www.oasis-open.org/committees/documents.php?wg_abbrev=security
17 | Revision history:
18 | V1.0 (November 2008):
19 | Initial version.
20 |
21 |
22 |
23 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/tests/data/requests/authn_request.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOkF1dGhuUmVxdWVzdCB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBJRD0iX09ORUxPR0lOMTAzNDI4OTA5YWJlYzQyNGZhNTgzMjdmNzk0NzQ5ODQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTExLTEzVDExOjM5OjM0WiIgRm9yY2VBdXRobj0iZmFsc2UiIElzUGFzc2l2ZT0iZmFsc2UiIFByb3RvY29sQmluZGluZz0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmJpbmRpbmdzOkhUVFAtUE9TVCIgQXNzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlVVJMPSJodHRwOi8vZXhhbXBsZS5jb20vYWNzIj4NCiAgICA8c2FtbDpJc3N1ZXIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+DQogICAgICAgIGh0dHA6Ly9pZHAuZXhhbXBsZS5jb20vbWV0YWRhdGENCiAgICA8L3NhbWw6SXNzdWVyPg0KICAgIDxzYW1scDpOYW1lSURQb2xpY3kgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6bmFtZWlkLWZvcm1hdDpwZXJzaXN0ZW50IiBTUE5hbWVRdWFsaWZpZXI9ImV4YW1wbGUuY29tIiBBbGxvd0NyZWF0ZT0idHJ1ZSIgLz4NCiAgICA8c2FtbHA6UmVxdWVzdGVkQXV0aG5Db250ZXh0IHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIENvbXBhcmlzb249ImV4YWN0Ij4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWYgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+DQogICAgICAgICAgICB1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZA0KICAgICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgPC9zYW1scDpSZXF1ZXN0ZWRBdXRobkNvbnRleHQ+DQo8L3NhbWxwOkF1dGhuUmVxdWVzdD4=
2 |
--------------------------------------------------------------------------------
/demo_pyramid/development.ini:
--------------------------------------------------------------------------------
1 | ###
2 | # app configuration
3 | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
4 | ###
5 |
6 | [app:main]
7 | use = egg:demo_pyramid
8 |
9 | pyramid.reload_templates = true
10 | pyramid.debug_authorization = false
11 | pyramid.debug_notfound = false
12 | pyramid.debug_routematch = false
13 | pyramid.default_locale_name = en
14 | pyramid.includes =
15 | pyramid_debugtoolbar
16 |
17 | # By default, the toolbar only appears for clients from IP addresses
18 | # '127.0.0.1' and '::1'.
19 | # debugtoolbar.hosts = 127.0.0.1 ::1
20 |
21 | ###
22 | # wsgi server configuration
23 | ###
24 |
25 | [server:main]
26 | use = egg:waitress#main
27 | listen = 127.0.0.1:6543 [::1]:6543
28 |
29 | ###
30 | # logging configuration
31 | # http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
32 | ###
33 |
34 | [loggers]
35 | keys = root, demo_pyramid
36 |
37 | [handlers]
38 | keys = console
39 |
40 | [formatters]
41 | keys = generic
42 |
43 | [logger_root]
44 | level = INFO
45 | handlers = console
46 |
47 | [logger_demo_pyramid]
48 | level = DEBUG
49 | handlers =
50 | qualname = demo_pyramid
51 |
52 | [handler_console]
53 | class = StreamHandler
54 | args = (sys.stderr,)
55 | level = NOTSET
56 | formatter = generic
57 |
58 | [formatter_generic]
59 | format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
60 |
--------------------------------------------------------------------------------
/demo_pyramid/setup.py:
--------------------------------------------------------------------------------
1 | import os
2 |
3 | from setuptools import setup, find_packages
4 |
5 | here = os.path.abspath(os.path.dirname(__file__))
6 | with open(os.path.join(here, "README.txt")) as f:
7 | README = f.read()
8 | with open(os.path.join(here, "CHANGES.txt")) as f:
9 | CHANGES = f.read()
10 |
11 | requires = [
12 | "pyramid",
13 | "pyramid_jinja2",
14 | "pyramid_debugtoolbar",
15 | "waitress",
16 | "xmlsec",
17 | "isodate",
18 | "python3-saml",
19 | ]
20 |
21 | tests_require = [
22 | "WebTest >= 1.3.1", # py3 compat
23 | "pytest",
24 | "pytest-cov",
25 | ]
26 |
27 | setup(
28 | name="demo_pyramid",
29 | version="0.0",
30 | description="demo_pyramid",
31 | long_description=README + "\n\n" + CHANGES,
32 | classifiers=[
33 | "Programming Language :: Python",
34 | "Framework :: Pyramid",
35 | "Topic :: Internet :: WWW/HTTP",
36 | "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
37 | ],
38 | author="",
39 | author_email="",
40 | url="",
41 | keywords="web pyramid pylons",
42 | packages=find_packages(),
43 | include_package_data=True,
44 | zip_safe=False,
45 | extras_require={
46 | "testing": tests_require,
47 | },
48 | install_requires=requires,
49 | entry_points={
50 | "paste.app_factory": [
51 | "main = demo_pyramid:main",
52 | ],
53 | },
54 | )
55 |
--------------------------------------------------------------------------------
/tests/settings/settings9.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://stuff.com/endpoints/metadata.php",
7 | "assertionConsumerService": {
8 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "http://idp.example.com/",
17 | "singleSignOnService": {
18 | "url": "http://idp.example.com/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://idp.example.com/SingleLogoutService.php"
22 | }
23 | },
24 | "security": {
25 | "authnRequestsSigned": false,
26 | "wantAssertionsSigned": false,
27 | "signMetadata": false
28 | },
29 | "contactPerson": {
30 | "technical": {
31 | "givenName": "technical_name",
32 | "emailAddress": "technical@example.com"
33 | },
34 | "support": {
35 | "givenName": "support_name",
36 | "emailAddress": "support@example.com"
37 | }
38 | },
39 | "organization": {
40 | "en-US": {
41 | "name": "sp_test",
42 | "displayname": "SP test",
43 | "url": "http://sp.example.com"
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/demo-flask/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if errors %}
6 |
7 |
Errors:
8 |
9 | {% for err in errors %}
10 | - {{err}}
11 | {% endfor %}
12 |
13 | {% if error_reason %}
14 |
{{error_reason}}
15 | {% endif %}
16 |
17 | {% endif %}
18 |
19 | {% if not_auth_warn %}
20 | Not authenticated
21 | {% endif %}
22 |
23 | {% if success_slo %}
24 | Successfully logged out
25 | {% endif %}
26 |
27 | {% if paint_logout %}
28 | {% if attributes %}
29 |
30 |
31 | | Name | Values |
32 |
33 |
34 | {% for attr in attributes %}
35 | | {{ attr.0 }} |
36 |
37 | {% for val in attr.1 %}
38 | - {{ val }}
39 | {% endfor %}
40 | |
41 | {% endfor %}
42 |
43 |
44 | {% else %}
45 | You don't have any attributes
46 | {% endif %}
47 | Logout
48 | {% else %}
49 | Login Login and access to attrs page
50 | {% endif %}
51 |
52 | {% endblock %}
53 |
--------------------------------------------------------------------------------
/demo-django/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if errors %}
6 |
7 |
Errors:
8 |
9 | {% for err in errors %}
10 | - {{err}}
11 | {% endfor %}
12 |
13 | {% if error_reason %}
14 |
Reason: {{error_reason}}
15 | {% endif %}
16 |
17 | {% endif %}
18 |
19 | {% if not_auth_warn %}
20 | Not authenticated
21 | {% endif %}
22 |
23 | {% if success_slo %}
24 | Successfully logged out
25 | {% endif %}
26 |
27 | {% if paint_logout %}
28 | {% if attributes %}
29 |
30 |
31 | | Name | Values |
32 |
33 |
34 | {% for attr in attributes %}
35 | | {{ attr.0 }} |
36 |
37 | {% for val in attr.1 %}
38 | - {{ val }}
39 | {% endfor %}
40 | |
41 | {% endfor %}
42 |
43 |
44 | {% else %}
45 | You don't have any attributes
46 | {% endif %}
47 | Logout
48 | {% else %}
49 | Login Login and access to attrs page
50 | {% endif %}
51 |
52 | {% endblock %}
53 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/schemas/sstc-saml-metadata-algsupport-v1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
13 | Document title: Metadata Extension Schema for SAML V2.0 Metadata Profile for Algorithm Support Version 1.0
14 | Document identifier: sstc-saml-metadata-algsupport.xsd
15 | Location: http://docs.oasis-open.org/security/saml/Post2.0/
16 | Revision history:
17 | V1.0 (June 2010):
18 | Initial version.
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/tests/settings/settings6.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://stuff.com/endpoints/metadata.php",
7 | "assertionConsumerService": {
8 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "http://idp.example.com/",
17 | "singleSignOnService": {
18 | "url": "http://idp.example.com/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://idp.example.com/SingleLogoutService.php"
22 | },
23 | "certFingerprint": "AF:E7:1C:28:EF:74:0B:C8:74:25:BE:13:A2:26:3D:37:97:1D:A1:F9",
24 | "certFingerprintAlgorithm": "sha1"
25 | },
26 | "security": {
27 | "authnRequestsSigned": true,
28 | "wantAssertionsSigned": false,
29 | "signMetadata": false
30 | },
31 | "contactPerson": {
32 | "technical": {
33 | "givenName": "technical_name",
34 | "emailAddress": "technical@example.com"
35 | },
36 | "support": {
37 | "givenName": "support_name",
38 | "emailAddress": "support@example.com"
39 | }
40 | },
41 | "organization": {
42 | "en-US": {
43 | "name": "sp_test",
44 | "displayname": "SP test",
45 | "url": "http://sp.example.com"
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/onelogin/saml2/compat.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | """ py3 compatibility class
4 |
5 |
6 | """
7 |
8 | from __future__ import absolute_import, print_function, with_statement
9 |
10 | try:
11 | basestring
12 | except NameError:
13 | basestring = str
14 |
15 | try:
16 | unicode
17 | except NameError:
18 | unicode = str
19 |
20 |
21 | if isinstance(b"", type("")): # py 2.x
22 | text_types = (basestring,) # noqa
23 | bytes_type = bytes
24 | str_type = basestring # noqa
25 |
26 | def utf8(data):
27 | """return utf8-encoded string"""
28 | if isinstance(data, basestring):
29 | return data.decode("utf8")
30 | return unicode(data)
31 |
32 | def to_string(data):
33 | """return string"""
34 | if isinstance(data, unicode):
35 | return data.encode("utf8")
36 | return str(data)
37 |
38 | def to_bytes(data):
39 | """return bytes"""
40 | if isinstance(data, unicode):
41 | return data.encode("utf8")
42 | return str(data)
43 |
44 | else: # py 3.x
45 | text_types = (bytes, str)
46 | bytes_type = bytes
47 | str_type = str
48 |
49 | def utf8(data):
50 | """return utf8-encoded string"""
51 | if isinstance(data, bytes):
52 | return data.decode("utf8")
53 | return str(data)
54 |
55 | def to_string(data):
56 | """convert to string"""
57 | if isinstance(data, bytes):
58 | return data.decode("utf8")
59 | return str(data)
60 |
61 | def to_bytes(data):
62 | """return bytes"""
63 | if isinstance(data, str):
64 | return data.encode("utf8")
65 | return bytes(data)
66 |
--------------------------------------------------------------------------------
/tests/data/misc/sp4.key:
--------------------------------------------------------------------------------
1 | -----BEGIN PRIVATE KEY-----
2 | MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD4ZrcXcjCBOQS7
3 | stUabuXPYnXKvcoJUrMVPRX1zfrXvpfghCrykbL1TKoqGfmEA9oNRoMBOmZCgLlK
4 | eb0TfuEO/u1jf4rRFcK7U/dYEiX74bQgUnJUWTfFlhwPjxGhn9zDrc2tSpworJBV
5 | amyBZIo5Beap5OJLote/Wqp1DZjNyEZ2m8m+lv8udmejmlo5RMoIzuG3VdH6ADC9
6 | LKF+QsXC/HRZBhLE/y+75/XrNODvX8eM8+9Xp21QlVF1EIZDfNQ2iHsA8GEpJDC5
7 | aomTW/xExBysejnwP2ROrfm3PIfP64EbB4G01f8eErlXeUD0oQ0gECgIXsJpfBkD
8 | IWMHwx3/AgMBAAECggEAdbLNvFlJ7GDlAj75RJ4ZXAuOPrNw4LwDyON53U9tNP7F
9 | HgfiBa/NuPdLhclq9geRMUsg1dsjCw3NPiGy2mL7JszaFJQhZXLHI1Xk1CE9SD0o
10 | yUvniln/2CqJP0IOG6QQydM3qo24snkZpq9XnHPUHrLSGdwu8aHGUpAWRoJbzdzR
11 | tBWBn6SlkuaE52vcGh7eMdKSICRCg2/gg6LIi89pkiI9tfozAL2LPcDTRGp3DA3w
12 | U6OO8k+d1La4s9G0i22OGSwPxGerTHnBIzpeM/ivRwBypFy3EV9bbjQlheI53xAo
13 | ZMmGeSnQ89MWgY64pnWrX862Mf1EZYTjumDe2dl1kQKBgQD9pBG2BbcQ8qieTf84
14 | 92LeOYTPRdd0N+gdyDKKorRO772zgxBwpSwO285nzy/FKSnpJIDtuee6OFClnDor
15 | Ui6lG1WPQeoSEdH1V10XkfSaoFOz7Hyv9H2dCLvW/VO9KYq07VAmQcvNZnqIW+tI
16 | edSHcQ3I8tnw4CiFa0BPvdhk9wKBgQD6tiuN2NvuNFFLvwpBGp3hjGyn6siyXDyP
17 | 8IXQmP66NxKqcX/NafVO3bVh6VrPGd7PL1PloQZ5EBG2PPtRdf/g4aeZKZleCUXm
18 | 9OgMEOUqdbTP9TGrmgNPtNBx3jnhnX/GTy/7GK77YlXEVplezWaerwRM7NCFCtp2
19 | W6K1M961OQKBgQDDSznr2hirrvuP8GRMW4a/rrAI3DDZplZN4CCySDbm9IcvGgJl
20 | iXgT9MDHg2q3t0sy3U18PYEkDEpkSZcsVfneXN6TEGCHCzuLWXovNM2O5VWtmrAi
21 | 1vCFIf1nuuRoKP1I89SbsFuYyogcSBIwWsX+h1ji2cJfSmlI2VzKSVW93wKBgQDA
22 | sqwfRoMkP0oM8jUrfQ3Egm4xUiAYFxTlfXUcs7t13UaXgs08USifCYGUVAvcCoJa
23 | tIHDiVS0UEmMzKpOHmghrM9oxbR/tpjnv21reMDrNbVX8ZnPz3ykEtHz816BrtC6
24 | 17qFQJ+d0CMj2XvghfdOGC8yAQL0fzcSqbQRmmCe4QKBgFWY9fqHEKdG/UlxZfBB
25 | C/QRNTJsrbZf9Ok/o1h6BHnK64xUc4elShEwV9IdC4QNW0UCr7WXoGLUkhfUphId
26 | q//KUDNc7VrWj5URsZcGi7WMkqNm9kPkpeuh3iSvh3+q7tK0/yfuj9ZQOjKzQnit
27 | VZBooJAJGdSqYgitpyxB71/n
28 | -----END PRIVATE KEY-----
29 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/templates/index.jinja2:
--------------------------------------------------------------------------------
1 | {% extends "layout.jinja2" %}
2 |
3 | {% block content %}
4 |
5 |
6 |
Pyramid Starter project
7 |
Welcome to demo_pyramid, a Pyramid application generated by
Cookiecutter.
8 |
9 |
10 | {% if errors %}
11 |
12 |
Errors:
13 |
14 | {% for err in errors %}
15 | - {{err}}
16 | {% endfor %}
17 | Reason: {{ error_reason }}
18 |
19 |
20 | {% endif %}
21 |
22 | {% if not_auth_warn %}
23 | Not authenticated
24 | {% endif %}
25 |
26 | {% if success_slo %}
27 | Successfully logged out
28 | {% endif %}
29 |
30 | {% if paint_logout %}
31 | {% if attributes %}
32 |
33 |
34 | | Name | Values |
35 |
36 |
37 | {% for attr in attributes %}
38 | | {{ attr.0 }} |
39 |
40 | {% for val in attr.1 %}
41 | - {{ val }}
42 | {% endfor %}
43 | |
44 | {% endfor %}
45 |
46 |
47 | {% else %}
48 | You don't have any attributes
49 | {% endif %}
50 | Logout
51 | {% else %}
52 | Login Login and access to attrs page
53 | {% endif %}
54 |
55 | {% endblock %}
56 |
--------------------------------------------------------------------------------
/tests/data/logout_requests/logout_request_encrypted_nameid.xml:
--------------------------------------------------------------------------------
1 |
8 | http://stuff.com/endpoints/metadata.php
9 |
10 |
14 |
15 |
16 |
17 |
18 |
19 | Dqhp3WPaoV7i2ry6ZywsfTa0ctWf9a37+BTPLlIycvpRqSObwvBoEGCezXpxUaMTNcFp6p7qSzyGpAbf/h3Qowt1gQqhTn04ofGOwXoMD21Pr5DCbjs9roU005DExjLCFKbf5P3de8QZh5Lcz3dVBU3y1Kc6wku/RuD/HfYBy7g=
20 |
21 |
22 |
23 |
24 | h1PDxhhKkO/IyIb4G5JFoHnBhaNj7n8fh8jqjHhFkRZtwpS/9HXENF3R+1F6XeHs3YfhbLJDHJroQPJwh4PjRUQnPYHdH5YbriR59VI0H9DoMWaJvd9wEMnH6FniXak9npP8BFPhV0uW1r3ynZ8mfn6DkBzC/IORRsmDrQv3IAcp+3J/rRui51ccH60xkff4dWsBYHBIHspuDNz8EU02Ho+hSayN3x1e4WuSdIOF0SRkh4r1mQ00/q2PHExdxmHr4wLQe8DkBFmdt+FxuEpjOIzyWgdJ1TbvgfjBe7a10PiiPO3inMy29ObLo0l4fkHH
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/tests/data/responses/unsigned_assertion.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCjxzYW1sOklzc3Vlcj5odHRwczovL2ZlZGVyYXRlLmV4YW1wbGUubmV0L3NhbWwvc2FtbDIvaWRwL21ldGFkYXRhLnBocDwvc2FtbDpJc3N1ZXI+ICAgIA0KPHNhbWw6U3ViamVjdD4NCiAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4NCiAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMTEtMDYtMTdUMTQ6NTk6MTRaIiBSZWNpcGllbnQ9Imh0dHBzOi8vZXhhbXBsZS5oZWxsby5jb20vYWNjZXNzL3NhbWwiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCjwvc2FtbDpTdWJqZWN0Pg0KPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTEtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwMTEtMDYtMTdUMTQ6NTk6MTRaIj4NCiAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8c2FtbDpBdWRpZW5jZT5oZWxsby5jb208L3NhbWw6QXVkaWVuY2U+DQogIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KPC9zYW1sOkNvbmRpdGlvbnM+DQo8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDExLTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgPC9zYW1sOkF0dHJpYnV0ZT4NCjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQo8L3NhbWw6QXNzZXJ0aW9uPg==
2 |
--------------------------------------------------------------------------------
/demo-tornado/templates/index.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 |
3 | {% block content %}
4 |
5 | {% if errors %}
6 |
7 |
Errors:
8 |
9 | {% for err in errors %}
10 | - {{err}}
11 | {% end %}
12 | {% if error_reason %}
13 | {{error_reason}}
14 | {% end %}
15 |
16 |
17 | {% end %}
18 |
19 | {% if not_auth_warn %}
20 | Not authenticated
21 | {% end %}
22 |
23 | {% if success_slo %}
24 | Successfully logged out
25 | {% end %}
26 |
27 | {% if paint_logout %}
28 | {% if attributes %}
29 |
30 |
31 | | Name | Values |
32 |
33 |
34 | {% for attr in attributes %}
35 |
36 | | {{ attr[0] }} |
37 |
38 |
39 | {% for elem in attr[1] %}
40 | - {{ elem }}
41 | {% end %}
42 | |
43 |
44 | {% end %}
45 |
46 |
47 |
59 |
60 |
61 | {% else %}
62 | You don't have any attributes
63 | {% end %}
64 | Logout
65 | {% else %}
66 | Login Login and access to attrs page
67 | {% end %}
68 |
69 | {% end %}
70 |
--------------------------------------------------------------------------------
/tests/src/OneLogin/saml2_tests/signed_response_test.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 |
4 | import json
5 | from os.path import dirname, join, exists
6 | import unittest
7 |
8 | from onelogin.saml2.response import OneLogin_Saml2_Response
9 | from onelogin.saml2.settings import OneLogin_Saml2_Settings
10 | from onelogin.saml2.utils import OneLogin_Saml2_Utils
11 |
12 |
13 | class OneLogin_Saml2_SignedResponse_Test(unittest.TestCase):
14 | data_path = join(dirname(__file__), "..", "..", "..", "data")
15 |
16 | def loadSettingsJSON(self):
17 | filename = join(dirname(__file__), "..", "..", "..", "settings", "settings1.json")
18 | if exists(filename):
19 | stream = open(filename, "r")
20 | settings = json.load(stream)
21 | stream.close()
22 | return settings
23 | else:
24 | raise Exception("Settings json file does not exist")
25 |
26 | def file_contents(self, filename):
27 | f = open(filename, "r")
28 | content = f.read()
29 | f.close()
30 | return content
31 |
32 | def testResponseSignedAssertionNot(self):
33 | """
34 | Tests the getNameId method of the OneLogin_Saml2_Response
35 | Case valid signed response, unsigned assertion
36 | """
37 | settings = OneLogin_Saml2_Settings(self.loadSettingsJSON())
38 | message = self.file_contents(join(self.data_path, "responses", "open_saml_response.xml"))
39 | response = OneLogin_Saml2_Response(settings, OneLogin_Saml2_Utils.b64encode(message))
40 |
41 | self.assertEqual("someone@example.org", response.get_nameid())
42 |
43 | def testResponseAndAssertionSigned(self):
44 | """
45 | Tests the getNameId method of the OneLogin_Saml2_Response
46 | Case valid signed response, signed assertion
47 | """
48 | settings = OneLogin_Saml2_Settings(self.loadSettingsJSON())
49 | message = self.file_contents(join(self.data_path, "responses", "simple_saml_php.xml"))
50 | response = OneLogin_Saml2_Response(settings, OneLogin_Saml2_Utils.b64encode(message))
51 |
52 | self.assertEqual("someone@example.com", response.get_nameid())
53 |
--------------------------------------------------------------------------------
/tests/settings/settings10.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "sp": {
5 | "entityId": "http://stuff.com/endpoints/metadata.php",
6 | "assertionConsumerService": {
7 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
8 | },
9 | "singleLogoutService": {
10 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
11 | },
12 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
13 | },
14 | "idp": {
15 | "entityId": "http://idp.example.com/",
16 | "singleSignOnService": {
17 | "url": "http://idp.example.com/SSOService.php"
18 | },
19 | "singleLogoutService": {
20 | "url": "http://idp.example.com/SingleLogoutService.php"
21 | },
22 | "x509cert": "MIICbDCCAdWgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wHhcNMTQwOTIzMTIyNDA4WhcNNDIwMjA4MTIyNDA4WjBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOWA+YHU7cvPOrBOfxCscsYTJB+kH3MaA9BFrSHFS+KcR6cw7oPSktIJxUgvDpQbtfNcOkE/tuOPBDoech7AXfvH6d7Bw7xtW8PPJ2mB5Hn/HGW2roYhxmfh3tR5SdwN6i4ERVF8eLkvwCHsNQyK2Ref0DAJvpBNZMHCpS24916/AgMBAAGjUDBOMB0GA1UdDgQWBBQ77/qVeiigfhYDITplCNtJKZTM8DAfBgNVHSMEGDAWgBQ77/qVeiigfhYDITplCNtJKZTM8DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAJO2j/1uO80E5C2PM6Fk9mzerrbkxl7AZ/mvlbOn+sNZE+VZ1AntYuG8ekbJpJtG1YfRfc7EA9mEtqvv4dhv7zBy4nK49OR+KpIBjItWB5kYvrqMLKBa32sMbgqqUqeF1ENXKjpvLSuPdfGJZA3dNa/+Dyb8GGqWe707zLyc5F8m"
23 | },
24 | "security": {
25 | "authnRequestsSigned": false,
26 | "wantAssertionsSigned": false,
27 | "signMetadata": false
28 | },
29 | "contactPerson": {
30 | "technical": {
31 | "givenName": "technical_name",
32 | "emailAddress": "technical@example.com"
33 | },
34 | "support": {
35 | "givenName": "support_name",
36 | "emailAddress": "support@example.com"
37 | }
38 | },
39 | "organization": {
40 | "en-US": {
41 | "name": "sp_test",
42 | "displayname": "SP test",
43 | "url": "http://sp.example.com"
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/tests/settings/settings3.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://pytoolkit.com:8000/metadata/",
7 | "assertionConsumerService": {
8 | "url": "http://pytoolkit.com:8000/?acs"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://pytoolkit.com:8000/?sls"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "https://pitbulk.no-ip.org/simplesaml/saml2/idp/metadata.php",
17 | "singleSignOnService": {
18 | "url": "http://pitbulk.no-ip.org/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://pitbulk.no-ip.org/SingleLogoutService.php"
22 | },
23 | "x509cert": "MIICbDCCAdWgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wHhcNMTQwOTIzMTIyNDA4WhcNNDIwMjA4MTIyNDA4WjBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOWA+YHU7cvPOrBOfxCscsYTJB+kH3MaA9BFrSHFS+KcR6cw7oPSktIJxUgvDpQbtfNcOkE/tuOPBDoech7AXfvH6d7Bw7xtW8PPJ2mB5Hn/HGW2roYhxmfh3tR5SdwN6i4ERVF8eLkvwCHsNQyK2Ref0DAJvpBNZMHCpS24916/AgMBAAGjUDBOMB0GA1UdDgQWBBQ77/qVeiigfhYDITplCNtJKZTM8DAfBgNVHSMEGDAWgBQ77/qVeiigfhYDITplCNtJKZTM8DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAJO2j/1uO80E5C2PM6Fk9mzerrbkxl7AZ/mvlbOn+sNZE+VZ1AntYuG8ekbJpJtG1YfRfc7EA9mEtqvv4dhv7zBy4nK49OR+KpIBjItWB5kYvrqMLKBa32sMbgqqUqeF1ENXKjpvLSuPdfGJZA3dNa/+Dyb8GGqWe707zLyc5F8m"
24 | },
25 | "security": {
26 | "authnRequestsSigned": false,
27 | "wantAssertionsSigned": false,
28 | "signMetadata": false
29 | },
30 | "contactPerson": {
31 | "technical": {
32 | "givenName": "technical_name",
33 | "emailAddress": "technical@example.com"
34 | },
35 | "support": {
36 | "givenName": "support_name",
37 | "emailAddress": "support@example.com"
38 | }
39 | },
40 | "organization": {
41 | "en-US": {
42 | "name": "sp_test",
43 | "displayname": "SP test",
44 | "url": "http://sp.example.com"
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/tests/settings/settings1.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://stuff.com/endpoints/metadata.php",
7 | "assertionConsumerService": {
8 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "http://idp.example.com/",
17 | "singleSignOnService": {
18 | "url": "http://idp.example.com/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://idp.example.com/SingleLogoutService.php"
22 | },
23 | "x509cert": "MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo"
24 | },
25 | "security": {
26 | "authnRequestsSigned": false,
27 | "wantAssertionsSigned": false,
28 | "signMetadata": false
29 | },
30 | "contactPerson": {
31 | "technical": {
32 | "givenName": "technical_name",
33 | "emailAddress": "technical@example.com"
34 | },
35 | "support": {
36 | "givenName": "support_name",
37 | "emailAddress": "support@example.com"
38 | }
39 | },
40 | "organization": {
41 | "en-US": {
42 | "name": "sp_test",
43 | "displayname": "SP test",
44 | "url": "http://sp.example.com"
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/tests/settings/settings2.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://stuff.com/endpoints/metadata.php",
7 | "assertionConsumerService": {
8 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "https://idp.example.com/simplesaml/saml2/idp/metadata.php",
17 | "singleSignOnService": {
18 | "url": "http://idp.example.com/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://idp.example.com/SingleLogoutService.php"
22 | },
23 | "x509cert": "MIICbDCCAdWgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wHhcNMTQwOTIzMTIyNDA4WhcNNDIwMjA4MTIyNDA4WjBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOWA+YHU7cvPOrBOfxCscsYTJB+kH3MaA9BFrSHFS+KcR6cw7oPSktIJxUgvDpQbtfNcOkE/tuOPBDoech7AXfvH6d7Bw7xtW8PPJ2mB5Hn/HGW2roYhxmfh3tR5SdwN6i4ERVF8eLkvwCHsNQyK2Ref0DAJvpBNZMHCpS24916/AgMBAAGjUDBOMB0GA1UdDgQWBBQ77/qVeiigfhYDITplCNtJKZTM8DAfBgNVHSMEGDAWgBQ77/qVeiigfhYDITplCNtJKZTM8DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAJO2j/1uO80E5C2PM6Fk9mzerrbkxl7AZ/mvlbOn+sNZE+VZ1AntYuG8ekbJpJtG1YfRfc7EA9mEtqvv4dhv7zBy4nK49OR+KpIBjItWB5kYvrqMLKBa32sMbgqqUqeF1ENXKjpvLSuPdfGJZA3dNa/+Dyb8GGqWe707zLyc5F8m"
24 | },
25 | "security": {
26 | "authnRequestsSigned": false,
27 | "wantAssertionsSigned": false,
28 | "signMetadata": false
29 | },
30 | "contactPerson": {
31 | "technical": {
32 | "givenName": "technical_name",
33 | "emailAddress": "technical@example.com"
34 | },
35 | "support": {
36 | "givenName": "support_name",
37 | "emailAddress": "support@example.com"
38 | }
39 | },
40 | "organization": {
41 | "en-US": {
42 | "name": "sp_test",
43 | "displayname": "SP test",
44 | "url": "http://sp.example.com"
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/tests/settings/settings11.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://stuff.com/endpoints/metadata.php",
7 | "assertionConsumerService": {
8 | "url": "http://stuff.com/endpoints/endpoints/acs.php"
9 | },
10 | "singleLogoutService": {
11 | "url": "http://stuff.com/endpoints/endpoints/sls.php"
12 | },
13 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
14 | },
15 | "idp": {
16 | "entityId": "http://idp.example.com/",
17 | "singleSignOnService": {
18 | "url": "http://idp.example.com/SSOService.php"
19 | },
20 | "singleLogoutService": {
21 | "url": "http://idp.example.com/SingleLogoutService.php"
22 | },
23 | "x509cert": "MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo"
24 | },
25 | "security": {
26 | "authnRequestsSigned": false,
27 | "wantAssertionsSigned": false,
28 | "signMetadata": false,
29 | "allowRepeatAttributeName": true
30 | },
31 | "contactPerson": {
32 | "technical": {
33 | "givenName": "technical_name",
34 | "emailAddress": "technical@example.com"
35 | },
36 | "support": {
37 | "givenName": "support_name",
38 | "emailAddress": "support@example.com"
39 | }
40 | },
41 | "organization": {
42 | "en-US": {
43 | "name": "sp_test",
44 | "displayname": "SP test",
45 | "url": "http://sp.example.com"
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/tests/data/metadata/idp_metadata2.xml:
--------------------------------------------------------------------------------
1 | MIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQMA4GA1UEChMHSmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5NDYzM1oXDTI3MTExOTE5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5Q28xEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAurnu0vVpIG9lzExnh11o/BGmzu7lB+yLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5mH3rrW0Bh/zd36CoUNjbbhHyTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOlMk2tXR+fIKQExFrOuK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m993PyoC1Y+N4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXOnKYlkB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAeHwzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qHpStsROT35DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7UkskvIZ2n1DdERtd+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPFKeu/3j9rgHNlRtocI6S1FdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6cOe+Ur1VwzS1JEDbSS2TWWhzq8ojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPAyy7YHlSiVX13QH2XTu/iQQ== urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress urn:oasis:names:tc:SAML:2.0:nameid-format:persistent urn:oasis:names:tc:SAML:2.0:nameid-format:transient
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_signature.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJwZngwNWYzY2UxMC0xNjE1LWYzZWEtYTk4OC02MGUzODBiMzI5OWYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiIgRGVzdGluYXRpb249Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvaW5kZXgucGhwP2FjcyIgSW5SZXNwb25zZVRvPSJPTkVMT0dJTl81ZmU5ZDZlNDk5YjJmMDkxMzIwNmFhYjNmNzE5MTcyOTA0OWJiODA3Ij48c2FtbDpJc3N1ZXI+aHR0cHM6Ly9leGFtcGxlLmNvbS9zaW1wbGVzYW1sL3NhbWwyL2lkcC9tZXRhZGF0YS5waHA8L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZnhiNGVjOWM4YS00OGViLWZkYTItN2Y3NC1mYTFhMTA1YTk5ZmUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vZXhhbXBsZS5jb20vc2ltcGxlc2FtbC9zYW1sMi9pZHAvbWV0YWRhdGEucGhwPC9zYW1sOklzc3Vlcj48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBTUE5hbWVRdWFsaWZpZXI9Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvbWV0YWRhdGEucGhwIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+NDkyODgyNjE1YWNmMzFjODA5NmI2MjcyNDVkNzZhZTUzMDM2YzA5MDwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjk5My0wOC0yM1QwNjo1NzowMVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9pbmRleC5waHA/YWNzIiBJblJlc3BvbnNlVG89Ik9ORUxPR0lOXzVmZTlkNmU0OTliMmYwOTEzMjA2YWFiM2Y3MTkxNzI5MDQ5YmI4MDciLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNC0wMi0xOVQwMTozNjozMVoiIE5vdE9uT3JBZnRlcj0iMjk5My0wOC0yM1QwNjo1NzowMVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjk5My0wMi0xOVQwOTozNzowMVoiIFNlc3Npb25JbmRleD0iXzYyNzNkNzdiOGNkZTBjMzMzZWM3OWQyMmE5ZmEwMDAzYjlmZTJkNzVjYiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4=
2 |
--------------------------------------------------------------------------------
/docs/saml2/_static/js/html5shiv.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3 | */
4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_subjectconfirmation_data.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+ICAgICAgICANCiAgICAgIDwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgIDwvc2FtbDpTdWJqZWN0Pg0KICAgIDxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDEwLTA2LTE3VDE0OjUzOjQ0WiIgTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDE0OjU5OjE0WiI+DQogICAgICA8c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgICAgICA8c2FtbDpBdWRpZW5jZT5odHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+DQogICAgICA8L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgICAgIDxzYW1sOkF1dGhuQ29udGV4dD4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDwvc2FtbDpBdXRoblN0YXRlbWVudD4NCiAgICA8c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgICAgIDxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+DQogICAgICA8L3NhbWw6QXR0cmlidXRlPg0KICAgIDwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogIDwvc2FtbDpBc3NlcnRpb24+DQo8L3NhbWxwOlJlc3BvbnNlPg==
--------------------------------------------------------------------------------
/tests/data/responses/no_audience.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgICAgIDxzYW1sOkF1dGhuQ29udGV4dD4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDwvc2FtbDpBdXRoblN0YXRlbWVudD4NCiAgICA8c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgICAgIDxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+DQogICAgICA8L3NhbWw6QXR0cmlidXRlPg0KICAgIDwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogIDwvc2FtbDpBc3NlcnRpb24+DQo8L3NhbWxwOlJlc3BvbnNlPg==
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_nameid.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPg0KICAgICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMjAtMDYtMTdUMTQ6NTk6MTRaIiBSZWNpcGllbnQ9Imh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL2VuZHBvaW50cy9hY3MucGhwIiBJblJlc3BvbnNlVG89Il81N2JjYmY3MC03YjFmLTAxMmUtYzgyMS03ODJiY2IxM2JiMzgiLz4NCiAgICAgIDwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgIDwvc2FtbDpTdWJqZWN0Pg0KICAgIDxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDEwLTA2LTE3VDE0OjUzOjQ0WiIgTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDE0OjU5OjE0WiI+DQogICAgICA8c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgICAgICA8c2FtbDpBdWRpZW5jZT5odHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+DQogICAgICA8L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgICAgIDxzYW1sOkF1dGhuQ29udGV4dD4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDwvc2FtbDpBdXRoblN0YXRlbWVudD4NCiAgICA8c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgICAgIDxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+DQogICAgICA8L3NhbWw6QXR0cmlidXRlPg0KICAgIDwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogIDwvc2FtbDpBc3NlcnRpb24+DQo8L3NhbWxwOlJlc3BvbnNlPg==
--------------------------------------------------------------------------------
/tests/data/metadata/idp_metadata.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJVUzET
8 | MBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UEBwwMU2FudGEgTW9uaWNhMREwDwYD
9 | VQQKDAhPbmVMb2dpbjEZMBcGA1UEAwwQYXBwLm9uZWxvZ2luLmNvbTAeFw0xMzA2
10 | MDUxNzE2MjBaFw0xODA2MDUxNzE2MjBaMGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQI
11 | DApDYWxpZm9ybmlhMRUwEwYDVQQHDAxTYW50YSBNb25pY2ExETAPBgNVBAoMCE9u
12 | ZUxvZ2luMRkwFwYDVQQDDBBhcHAub25lbG9naW4uY29tMIIBIjANBgkqhkiG9w0B
13 | AQEFAAOCAQ8AMIIBCgKCAQEAse8rnep4qL2GmhH10pMQyJ2Jae+AQHyfgVjaQZ7Z
14 | 0QQog5jX91vcJRSMi0XWJnUtOr6lF0dq1+yckjZ92wyLrH+7fvngNO1aV4Mjk9sT
15 | gf+iqMrae6y6fRxDt9PXrEFVjvd3vv7QTJf2FuIPy4vVP06Dt8EMkQIr8rmLmU0m
16 | Tr1k2DkrdtdlCuNFTXuAu3QqfvNCRrRwfNObn9MP6JeOUdcGLJsBjGF8exfcN1SF
17 | zRF0JFr3dmOlx761zK5liD0T1sYWnDquatj/JD9fZMbKecBKni1NglH/LVd+b6aJ
18 | UAr5LulERULUjLqYJRKW31u91/4Qazdo9tbvwqyFxaoUrwIDAQABo4HUMIHRMAwG
19 | A1UdEwEB/wQCMAAwHQYDVR0OBBYEFPWcXvQSlTXnzZD2xziuoUvrrDedMIGRBgNV
20 | HSMEgYkwgYaAFPWcXvQSlTXnzZD2xziuoUvrrDedoWukaTBnMQswCQYDVQQGEwJV
21 | UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UEBwwMU2FudGEgTW9uaWNhMREw
22 | DwYDVQQKDAhPbmVMb2dpbjEZMBcGA1UEAwwQYXBwLm9uZWxvZ2luLmNvbYIBATAO
23 | BgNVHQ8BAf8EBAMCBPAwDQYJKoZIhvcNAQEFBQADggEBAB/8xe3rzqXQVxzHyAHu
24 | AuPa73ClDoL1cko0Fp8CGcqEIyj6Te9gx5z6wyfv+Lo8RFvBLlnB1lXqbC+fTGcV
25 | gG/4oKLJ5UwRFxInqpZPnOAudVNnd0PYOODn9FWs6u+OTIQIaIcPUv3MhB9lwHIJ
26 | sTk/bs9xcru5TPyLIxLLd6ib/pRceKH2mTkzUd0DYk9CQNXXeoGx/du5B9nh3ClP
27 | TbVakRzl3oswgI5MQIphYxkW70SopEh4kOFSRE1ND31NNIq1YrXlgtkguQBFsZWu
28 | QOPR6cEwFZzP0tHTYbI839WgxX6hfhIUTUz6mLqq4+3P4BG3+1OXeVDg63y8Uh78
29 | 1sE=
30 |
31 |
32 |
33 | urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
34 |
35 |
36 |
37 |
38 |
39 | Support
40 | support@example.com
41 |
42 |
43 |
--------------------------------------------------------------------------------
/tests/data/responses/decrypted_valid_encrypted_assertion.xml:
--------------------------------------------------------------------------------
1 |
2 | http://idp.example.com/
3 |
4 |
5 |
6 | http://idp.example.com/_68392312d490db6d355555cfbbd8ec95d746516f60http://stuff.com/endpoints/metadata.phpurn:oasis:names:tc:SAML:2.0:ac:classes:Passwordtesttest@example.comtestwaa2useradmin
7 |
--------------------------------------------------------------------------------
/tests/data/responses/pretty_decrypted_valid_encrypted_assertion.xml:
--------------------------------------------------------------------------------
1 |
2 | http://idp.example.com/
3 |
4 |
5 |
6 | http://idp.example.com/_68392312d490db6d355555cfbbd8ec95d746516f60http://stuff.com/endpoints/metadata.phpurn:oasis:names:tc:SAML:2.0:ac:classes:Passwordtesttest@example.comtestwaa2useradmin
7 |
8 |
--------------------------------------------------------------------------------
/demo_pyramid/demo_pyramid/templates/layout.jinja2:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | Cookiecutter Starter project for the Pyramid Web Framework
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
 }})
33 |
34 |
35 | {% block content %}
36 |
No content
37 | {% endblock content %}
38 |
39 |
40 |
49 |
50 |
51 | Copyright © Pylons Project
52 |
53 |
54 |
55 |
56 |
57 |
58 |
60 |
61 |
62 |
63 |
64 |
65 |
--------------------------------------------------------------------------------
/demo-django/demo/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for demo project.
3 |
4 | For more information on this file, see
5 | https://docs.djangoproject.com/en/1.6/topics/settings/
6 |
7 | For the full list of settings and their values, see
8 | https://docs.djangoproject.com/en/1.6/ref/settings/
9 | """
10 |
11 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
12 | import os
13 |
14 | BASE_DIR = os.path.dirname(os.path.dirname(__file__))
15 |
16 | # Quick-start development settings - unsuitable for production
17 | # See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
18 |
19 | # SECURITY WARNING: keep the secret key used in production secret!
20 | SECRET_KEY = '0c7216)gs^ne$%3+je20zuo+g0&^6yb@e68qdr!^!r0hmb-6y+'
21 |
22 | # SECURITY WARNING: don't run with debug turned on in production!
23 | DEBUG = True
24 |
25 | ALLOWED_HOSTS = []
26 |
27 | # Application definition
28 |
29 | INSTALLED_APPS = (
30 | 'django.contrib.admin',
31 | 'django.contrib.auth',
32 | 'django.contrib.contenttypes',
33 | 'django.contrib.sessions',
34 | 'django.contrib.messages',
35 | 'django.contrib.staticfiles',
36 | )
37 |
38 | MIDDLEWARE = (
39 | 'django.contrib.sessions.middleware.SessionMiddleware',
40 | 'django.middleware.common.CommonMiddleware',
41 | # 'django.middleware.csrf.CsrfViewMiddleware',
42 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
43 | 'django.contrib.messages.middleware.MessageMiddleware',
44 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
45 | )
46 |
47 | ROOT_URLCONF = 'demo.urls'
48 |
49 | WSGI_APPLICATION = 'demo.wsgi.application'
50 |
51 | # Database
52 | # https://docs.djangoproject.com/en/1.6/ref/settings/#databases
53 |
54 | # DATABASES = {
55 | # 'default': {
56 | # 'ENGINE': 'django.db.backends.sqlite3',
57 | # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
58 | # }
59 | # }
60 |
61 | # Internationalization
62 | # https://docs.djangoproject.com/en/1.6/topics/i18n/
63 |
64 | LANGUAGE_CODE = 'en-us'
65 |
66 | TIME_ZONE = 'UTC'
67 |
68 | USE_I18N = True
69 |
70 | USE_L10N = True
71 |
72 | USE_TZ = True
73 |
74 | STATIC_URL = '/static/'
75 |
76 | SAML_FOLDER = os.path.join(BASE_DIR, 'saml')
77 |
78 | SESSION_ENGINE = 'django.contrib.sessions.backends.file'
79 |
80 | TEMPLATES = [
81 | {
82 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
83 | 'DIRS': [os.path.join(BASE_DIR, 'templates')],
84 | 'APP_DIRS': True,
85 | 'OPTIONS': {
86 | 'debug': True,
87 | 'context_processors': [
88 | 'django.template.context_processors.debug',
89 | 'django.template.context_processors.request',
90 | 'django.contrib.auth.context_processors.auth',
91 | 'django.contrib.messages.context_processors.messages',
92 | ],
93 | },
94 | },
95 | ]
96 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_audience.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjk5My0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjI5OTMtMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9pbnZhbGlkLmF1ZGllbmNlLmNvbTwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjI5OTMtMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
2 |
--------------------------------------------------------------------------------
/tests/data/responses/unsigned_response.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjk5OS0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjI5OTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjI5OTktMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
2 |
--------------------------------------------------------------------------------
/tests/data/metadata/expired_metadata_settings1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOoMIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo
5 |
6 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_subjectconfirmation_inresponse.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iaW52YWxpZF9pbnJlc3BvbnNlIi8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NFoiIE5vdE9uT3JBZnRlcj0iMjA5OS0wNi0xN1QxNDo1OToxNFoiPg0KICAgICAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICAgICAgPHNhbWw6QXVkaWVuY2U+aHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvbWV0YWRhdGEucGhwPC9zYW1sOkF1ZGllbmNlPg0KICAgICAgPC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgPC9zYW1sOkNvbmRpdGlvbnM+DQogICAgPHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjA3WiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjA5OS0wNi0xN1QyMjo1NDoxNFoiIFNlc3Npb25JbmRleD0iXzUxYmUzNzk2NWZlYjU1NzlkODAzMTQxMDc2OTM2ZGMyZTlkMWQ5OGViZiI+DQogICAgICA8c2FtbDpBdXRobkNvbnRleHQ+DQogICAgICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICAgICAgPC9zYW1sOkF1dGhuQ29udGV4dD4NCiAgICA8L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+DQogICAgPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICAgICAgPHNhbWw6QXR0cmlidXRlIE5hbWU9Im1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPg0KICAgICAgICA8c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPg0KICAgICAgPC9zYW1sOkF0dHJpYnV0ZT4NCiAgICA8L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8L3NhbWw6QXNzZXJ0aW9uPg0KPC9zYW1scDpSZXNwb25zZT4=
--------------------------------------------------------------------------------
/tests/data/metadata/noentity_metadata_settings1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | MIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOoMIICgTCCAeoCCQCbOlrWDdX7FTANBgkqhkiG9w0BAQUFADCBhDELMAkGA1UEBhMCTk8xGDAWBgNVBAgTD0FuZHJlYXMgU29sYmVyZzEMMAoGA1UEBxMDRm9vMRAwDgYDVQQKEwdVTklORVRUMRgwFgYDVQQDEw9mZWlkZS5lcmxhbmcubm8xITAfBgkqhkiG9w0BCQEWEmFuZHJlYXNAdW5pbmV0dC5ubzAeFw0wNzA2MTUxMjAxMzVaFw0wNzA4MTQxMjAxMzVaMIGEMQswCQYDVQQGEwJOTzEYMBYGA1UECBMPQW5kcmVhcyBTb2xiZXJnMQwwCgYDVQQHEwNGb28xEDAOBgNVBAoTB1VOSU5FVFQxGDAWBgNVBAMTD2ZlaWRlLmVybGFuZy5ubzEhMB8GCSqGSIb3DQEJARYSYW5kcmVhc0B1bmluZXR0Lm5vMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDivbhR7P516x/S3BqKxupQe0LONoliupiBOesCO3SHbDrl3+q9IbfnfmE04rNuMcPsIxB161TdDpIesLCn7c8aPHISKOtPlAeTZSnb8QAu7aRjZq3+PbrP5uW3TcfCGPtKTytHOge/OlJbo078dVhXQ14d1EDwXJW1rRXuUt4C8QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBACDVfp86HObqY+e8BUoWQ9+VMQx1ASDohBjwOsg2WykUqRXF+dLfcUH9dWR63CtZIKFDbStNomPnQz7nbK+onygwBspVEbnHuUihZq3ZUdmumQqCw4Uvs/1Uvq3orOo/WJVhTyvLgFVK2QarQ4/67OZfHd7R+POBXhophSMv1ZOo
5 |
6 | urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_sessionindex.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjIwMTMtMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_subjectconfirmation_recipient.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL2ludmFsaWQucmVjaXBlbnQuZXhhbXBsZS5jb20iIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_subjectconfirmation_nb.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdEJlZm9yZT0iMjk5OS0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjI5OTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjI5OTktMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
2 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_subjectconfirmation_noa.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+DQogICAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAxMC0wNi0xN1QxNDo1OToxNFoiIFJlY2lwaWVudD0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCIvPg0KICAgICAgPC9zYW1sOlN1YmplY3RDb25maXJtYXRpb24+DQogICAgPC9zYW1sOlN1YmplY3Q+DQogICAgPHNhbWw6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMTAtMDYtMTdUMTQ6NTM6NDRaIiBOb3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMTQ6NTk6MTRaIj4NCiAgICAgIDxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgICAgIDxzYW1sOkF1ZGllbmNlPmh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT4NCiAgICAgIDwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgIDwvc2FtbDpDb25kaXRpb25zPg0KICAgIDxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAxMS0wNi0xN1QxNDo1NDowN1oiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMjI6NTQ6MTRaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_issuer_assertion.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2ludmFsaWQuaXNzdWVyLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+ICAgIA0KICAgIDxzYW1sOlN1YmplY3Q+DQogICAgICA8c2FtbDpOYW1lSUQgU1BOYW1lUXVhbGlmaWVyPSJoZWxsby5jb20iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD4NCiAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4NCiAgICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDIwLTA2LTE3VDE0OjU5OjE0WiIgUmVjaXBpZW50PSJodHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9lbmRwb2ludHMvYWNzLnBocCIgSW5SZXNwb25zZVRvPSJfNTdiY2JmNzAtN2IxZi0wMTJlLWM4MjEtNzgyYmNiMTNiYjM4Ii8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NFoiIE5vdE9uT3JBZnRlcj0iMjA5OS0wNi0xN1QxNDo1OToxNFoiPg0KICAgICAgPHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICAgICAgPHNhbWw6QXVkaWVuY2U+aHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvbWV0YWRhdGEucGhwPC9zYW1sOkF1ZGllbmNlPg0KICAgICAgPC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+DQogICAgPC9zYW1sOkNvbmRpdGlvbnM+DQogICAgPHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjA3WiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjA5OS0wNi0xN1QyMjo1NDoxNFoiIFNlc3Npb25JbmRleD0iXzUxYmUzNzk2NWZlYjU1NzlkODAzMTQxMDc2OTM2ZGMyZTlkMWQ5OGViZiI+DQogICAgICA8c2FtbDpBdXRobkNvbnRleHQ+DQogICAgICAgIDxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPg0KICAgICAgPC9zYW1sOkF1dGhuQ29udGV4dD4NCiAgICA8L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+DQogICAgPHNhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICAgICAgPHNhbWw6QXR0cmlidXRlIE5hbWU9Im1haWwiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPg0KICAgICAgICA8c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPg0KICAgICAgPC9zYW1sOkF0dHJpYnV0ZT4NCiAgICA8L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pg0KICA8L3NhbWw6QXNzZXJ0aW9uPg0KPC9zYW1scDpSZXNwb25zZT4=
--------------------------------------------------------------------------------
/tests/data/responses/invalids/invalid_issuer_message.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaW52YWxpZC5pc3Nlci5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPg0KICA8c2FtbHA6U3RhdHVzPg0KICAgIDxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4NCiAgPC9zYW1scDpTdGF0dXM+DQogIDxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZng3ODQxOTkxYy1jNzNmLTQwMzUtZTJlZS1jMTcwYzBlMWQzZTQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjE0WiI+DQogICAgPHNhbWw6SXNzdWVyPmh0dHA6Ly9pZHAuZXhhbXBsZS5jb20vPC9zYW1sOklzc3Vlcj4gICAgDQogICAgPHNhbWw6U3ViamVjdD4NCiAgICAgIDxzYW1sOk5hbWVJRCBTUE5hbWVRdWFsaWZpZXI9ImhlbGxvLmNvbSIgRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoxLjE6bmFtZWlkLWZvcm1hdDplbWFpbEFkZHJlc3MiPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6TmFtZUlEPg0KICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPg0KICAgICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMjAtMDYtMTdUMTQ6NTk6MTRaIiBSZWNpcGllbnQ9Imh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL2VuZHBvaW50cy9hY3MucGhwIiBJblJlc3BvbnNlVG89Il81N2JjYmY3MC03YjFmLTAxMmUtYzgyMS03ODJiY2IxM2JiMzgiLz4NCiAgICAgIDwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgIDwvc2FtbDpTdWJqZWN0Pg0KICAgIDxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDEwLTA2LTE3VDE0OjUzOjQ0WiIgTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDE0OjU5OjE0WiI+DQogICAgICA8c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgICAgICA8c2FtbDpBdWRpZW5jZT5odHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+DQogICAgICA8L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgICAgIDxzYW1sOkF1dGhuQ29udGV4dD4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDwvc2FtbDpBdXRoblN0YXRlbWVudD4NCiAgICA8c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgICAgIDxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+DQogICAgICA8L3NhbWw6QXR0cmlidXRlPg0KICAgIDwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogIDwvc2FtbDpBc3NlcnRpb24+DQo8L3NhbWxwOlJlc3BvbnNlPg0KICA=
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_subjectconfirmation_method.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIiBEZXN0aW5hdGlvbj0iaHR0cDovL3N0dWZmLmNvbS9lbmRwb2ludHMvZW5kcG9pbnRzL2Fjcy5waHAiIEluUmVzcG9uc2VUbz0iXzU3YmNiZjcwLTdiMWYtMDEyZS1jODIxLTc4MmJjYjEzYmIzOCI+DQogIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+DQogIDxzYW1scDpTdGF0dXM+DQogICAgPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPg0KICA8L3NhbWxwOlN0YXR1cz4NCiAgPHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9InBmeDc4NDE5OTFjLWM3M2YtNDAzNS1lMmVlLWMxNzBjMGUxZDNlNCIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTRaIj4NCiAgICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPiAgICANCiAgICA8c2FtbDpTdWJqZWN0Pg0KICAgICAgPHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaGVsbG8uY29tIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpOYW1lSUQ+DQogICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmhvbGRlci1vZi1rZXkiPg0KICAgICAgICA8c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uRGF0YSBOb3RPbk9yQWZ0ZXI9IjIwMjAtMDYtMTdUMTQ6NTk6MTRaIiBSZWNpcGllbnQ9Imh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL2VuZHBvaW50cy9hY3MucGhwIiBJblJlc3BvbnNlVG89Il81N2JjYmY3MC03YjFmLTAxMmUtYzgyMS03ODJiY2IxM2JiMzgiLz4NCiAgICAgIDwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgIDwvc2FtbDpTdWJqZWN0Pg0KICAgIDxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDEwLTA2LTE3VDE0OjUzOjQ0WiIgTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDE0OjU5OjE0WiI+DQogICAgICA8c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgICAgICA8c2FtbDpBdWRpZW5jZT5odHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+DQogICAgICA8L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDdaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDk5LTA2LTE3VDIyOjU0OjE0WiIgU2Vzc2lvbkluZGV4PSJfNTFiZTM3OTY1ZmViNTU3OWQ4MDMxNDEwNzY5MzZkYzJlOWQxZDk4ZWJmIj4NCiAgICAgIDxzYW1sOkF1dGhuQ29udGV4dD4NCiAgICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+DQogICAgICA8L3NhbWw6QXV0aG5Db250ZXh0Pg0KICAgIDwvc2FtbDpBdXRoblN0YXRlbWVudD4NCiAgICA8c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICA8c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+DQogICAgICAgIDxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnNvbWVvbmVAZXhhbXBsZS5jb208L3NhbWw6QXR0cmlidXRlVmFsdWU+DQogICAgICA8L3NhbWw6QXR0cmlidXRlPg0KICAgIDwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogIDwvc2FtbDpBc3NlcnRpb24+DQo8L3NhbWxwOlJlc3BvbnNlPg==
--------------------------------------------------------------------------------
/tests/data/responses/unsigned_response_with_miliseconds.xm.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8c2FtbHA6UmVzcG9uc2UgeG1sbnM6c2FtbHA9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiIgSUQ9InBmeGMzMmFlZDY3LTgyMGYtNDI5Ni0wYzIwLTIwNWExMGRkNTc4NyIgVmVyc2lvbj0iMi4wIiBJc3N1ZUluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MTQuMTIwWiIgRGVzdGluYXRpb249Imh0dHA6Ly9zdHVmZi5jb20vZW5kcG9pbnRzL2VuZHBvaW50cy9hY3MucGhwIiBJblJlc3BvbnNlVG89Il81N2JjYmY3MC03YjFmLTAxMmUtYzgyMS03ODJiY2IxM2JiMzgiPg0KICA8c2FtbDpJc3N1ZXI+aHR0cDovL2lkcC5leGFtcGxlLmNvbS88L3NhbWw6SXNzdWVyPg0KICA8c2FtbHA6U3RhdHVzPg0KICAgIDxzYW1scDpTdGF0dXNDb2RlIFZhbHVlPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6c3RhdHVzOlN1Y2Nlc3MiLz4NCiAgPC9zYW1scDpTdGF0dXM+DQogIDxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZng3ODQxOTkxYy1jNzNmLTQwMzUtZTJlZS1jMTcwYzBlMWQzZTQiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDExLTA2LTE3VDE0OjU0OjE0LjEyMFoiPg0KICAgIDxzYW1sOklzc3Vlcj5odHRwOi8vaWRwLmV4YW1wbGUuY29tLzwvc2FtbDpJc3N1ZXI+ICAgIA0KICAgIDxzYW1sOlN1YmplY3Q+DQogICAgICA8c2FtbDpOYW1lSUQgU1BOYW1lUXVhbGlmaWVyPSJoZWxsby5jb20iIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj5zb21lb25lQGV4YW1wbGUuY29tPC9zYW1sOk5hbWVJRD4NCiAgICAgIDxzYW1sOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj4NCiAgICAgICAgPHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDIwLTA2LTE3VDE0OjU5OjE0WiIgUmVjaXBpZW50PSJodHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9lbmRwb2ludHMvYWNzLnBocCIgSW5SZXNwb25zZVRvPSJfNTdiY2JmNzAtN2IxZi0wMTJlLWM4MjEtNzgyYmNiMTNiYjM4Ii8+DQogICAgICA8L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj4NCiAgICA8L3NhbWw6U3ViamVjdD4NCiAgICA8c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxMC0wNi0xN1QxNDo1Mzo0NC4xNzNaIiBOb3RPbk9yQWZ0ZXI9IjIwOTktMDYtMTdUMTQ6NTk6MTQuMjM1WiI+DQogICAgICA8c2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPg0KICAgICAgICA8c2FtbDpBdWRpZW5jZT5odHRwOi8vc3R1ZmYuY29tL2VuZHBvaW50cy9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+DQogICAgICA8L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj4NCiAgICA8L3NhbWw6Q29uZGl0aW9ucz4NCiAgICA8c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTEtMDYtMTdUMTQ6NTQ6MDcuMTIwWiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjA5OS0wNi0xN1QyMjo1NDoxNC4xMjBaIiBTZXNzaW9uSW5kZXg9Il81MWJlMzc5NjVmZWI1NTc5ZDgwMzE0MTA3NjkzNmRjMmU5ZDFkOThlYmYiPg0KICAgICAgPHNhbWw6QXV0aG5Db250ZXh0Pg0KICAgICAgICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiAgICAgIDwvc2FtbDpBdXRobkNvbnRleHQ+DQogICAgPC9zYW1sOkF1dGhuU3RhdGVtZW50Pg0KICAgIDxzYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgICAgIDxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJtYWlsIiBOYW1lRm9ybWF0PSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXR0cm5hbWUtZm9ybWF0OmJhc2ljIj4NCiAgICAgICAgPHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+c29tZW9uZUBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgIDwvc2FtbDpBdHRyaWJ1dGU+DQogICAgPC9zYW1sOkF0dHJpYnV0ZVN0YXRlbWVudD4NCiAgPC9zYW1sOkFzc2VydGlvbj4NCjwvc2FtbHA6UmVzcG9uc2U+
--------------------------------------------------------------------------------
/docs/saml2/_static/css/badge_only.css:
--------------------------------------------------------------------------------
1 | .clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
--------------------------------------------------------------------------------
/tests/settings/settings5.json:
--------------------------------------------------------------------------------
1 | {
2 | "strict": false,
3 | "debug": false,
4 | "custom_base_path": "../../../tests/data/customPath/",
5 | "sp": {
6 | "entityId": "http://pytoolkit.com:8000/metadata/",
7 | "assertionConsumerService": {
8 | "url": "http://pytoolkit.com:8000/?acs"
9 | },
10 | "attributeConsumingService": {
11 | "isDefault": false,
12 | "serviceName": "Test Service",
13 | "serviceDescription": "Test Service",
14 | "requestedAttributes": [ {
15 | "name": "userType",
16 | "nameFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:basic",
17 | "isRequired": false,
18 | "attributeValue": ["userType","admin"]
19 | },
20 | {
21 | "name": "urn:oid:0.9.2342.19200300.100.1.1",
22 | "nameFormat": "urn:oasis:names:tc:SAML:2.0:attrname-format:uri",
23 | "friendlyName": "uid",
24 | "isRequired": false
25 | }
26 | ]
27 | },
28 | "singleLogoutService": {
29 | "url": "http://pytoolkit.com:8000/?sls"
30 | },
31 | "NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
32 | },
33 | "idp": {
34 | "entityId": "https://pitbulk.no-ip.org/simplesaml/saml2/idp/metadata.php",
35 | "singleSignOnService": {
36 | "url": "http://pitbulk.no-ip.org/SSOService.php"
37 | },
38 | "singleLogoutService": {
39 | "url": "http://pitbulk.no-ip.org/SingleLogoutService.php"
40 | },
41 | "x509cert": "MIICbDCCAdWgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wHhcNMTQwOTIzMTIyNDA4WhcNNDIwMjA4MTIyNDA4WjBTMQswCQYDVQQGEwJ1czETMBEGA1UECAwKQ2FsaWZvcm5pYTEVMBMGA1UECgwMT25lbG9naW4gSW5jMRgwFgYDVQQDDA9pZHAuZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOWA+YHU7cvPOrBOfxCscsYTJB+kH3MaA9BFrSHFS+KcR6cw7oPSktIJxUgvDpQbtfNcOkE/tuOPBDoech7AXfvH6d7Bw7xtW8PPJ2mB5Hn/HGW2roYhxmfh3tR5SdwN6i4ERVF8eLkvwCHsNQyK2Ref0DAJvpBNZMHCpS24916/AgMBAAGjUDBOMB0GA1UdDgQWBBQ77/qVeiigfhYDITplCNtJKZTM8DAfBgNVHSMEGDAWgBQ77/qVeiigfhYDITplCNtJKZTM8DAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBDQUAA4GBAJO2j/1uO80E5C2PM6Fk9mzerrbkxl7AZ/mvlbOn+sNZE+VZ1AntYuG8ekbJpJtG1YfRfc7EA9mEtqvv4dhv7zBy4nK49OR+KpIBjItWB5kYvrqMLKBa32sMbgqqUqeF1ENXKjpvLSuPdfGJZA3dNa/+Dyb8GGqWe707zLyc5F8m"
42 | },
43 | "security": {
44 | "authnRequestsSigned": false,
45 | "wantAssertionsSigned": false,
46 | "signMetadata": false
47 | },
48 | "contactPerson": {
49 | "technical": {
50 | "givenName": "technical_name",
51 | "emailAddress": "technical@example.com"
52 | },
53 | "support": {
54 | "givenName": "support_name",
55 | "emailAddress": "support@example.com"
56 | }
57 | },
58 | "organization": {
59 | "en-US": {
60 | "name": "sp_test",
61 | "displayname": "SP test",
62 | "url": "http://sp.example.com"
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/.github/workflows/python-package.yml:
--------------------------------------------------------------------------------
1 | # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3 |
4 | name: Python package
5 |
6 | on:
7 | push:
8 | branches:
9 | - master
10 | pull_request:
11 | branches:
12 | - master
13 |
14 | jobs:
15 | test_py3:
16 | runs-on: ubuntu-22.04
17 | strategy:
18 | fail-fast: false
19 | matrix:
20 | python-version:
21 | - "3.7"
22 | - "3.8"
23 | - "3.9"
24 | - "3.10"
25 | - "3.11"
26 | - "3.12"
27 | steps:
28 | - uses: actions/checkout@v4
29 | - name: Set up Python ${{ matrix.python-version }}
30 | uses: actions/setup-python@v5
31 | with:
32 | python-version: ${{ matrix.python-version }}
33 | - uses: actions/cache@v4
34 | with:
35 | path: ~/.cache/pip
36 | key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
37 | restore-keys: |
38 | ${{ runner.os }}-pip-
39 | - name: Install dependencies
40 | run: |
41 | pip install -U setuptools
42 | sudo apt-get update -qq
43 | sudo apt-get install -qq swig libxml2-dev libxmlsec1-dev
44 | make install-req
45 | make install-test
46 | - name: Test
47 | run: make pytest
48 | lint:
49 | runs-on: ubuntu-22.04
50 | steps:
51 | - uses: actions/checkout@v4
52 | - uses: actions/setup-python@v5
53 | with:
54 | python-version: "3.12"
55 | - uses: actions/cache@v4
56 | with:
57 | path: ~/.cache/pip
58 | key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
59 | restore-keys: |
60 | ${{ runner.os }}-pip-
61 | - name: Install dependencies
62 | run: |
63 | pip install -U setuptools
64 | sudo apt-get update -qq
65 | sudo apt-get install -qq swig libxml2-dev libxmlsec1-dev
66 | make install-req
67 | make install-lint
68 | - name: Run linters
69 | run: |
70 | make flake8
71 | make black
72 | coveralls:
73 | if: ${{ github.secret_source == 'Actions' }}
74 | runs-on: ubuntu-22.04
75 | environment: CI
76 | steps:
77 | - uses: actions/checkout@v4
78 | - uses: actions/setup-python@v5
79 | with:
80 | python-version: "3.12"
81 | - uses: actions/cache@v4
82 | with:
83 | path: ~/.cache/pip
84 | key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
85 | restore-keys: |
86 | ${{ runner.os }}-pip-
87 | - name: Install dependencies
88 | run: |
89 | pip install -U setuptools
90 | sudo apt-get update -qq
91 | sudo apt-get install -qq swig libxml2-dev libxmlsec1-dev
92 | make install-req
93 | make install-test
94 | - name: Run coveralls
95 | env:
96 | COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
97 | run: |
98 | pip install coveralls
99 | make coverage
100 | make coveralls
101 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_key.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJwZngwNWYzY2UxMC0xNjE1LWYzZWEtYTk4OC02MGUzODBiMzI5OWYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiIgRGVzdGluYXRpb249Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvaW5kZXgucGhwP2FjcyIgSW5SZXNwb25zZVRvPSJPTkVMT0dJTl81ZmU5ZDZlNDk5YjJmMDkxMzIwNmFhYjNmNzE5MTcyOTA0OWJiODA3Ij48c2FtbDpJc3N1ZXI+aHR0cHM6Ly9leGFtcGxlLmNvbS9zaW1wbGVzYW1sL3NhbWwyL2lkcC9tZXRhZGF0YS5waHA8L3NhbWw6SXNzdWVyPjxzYW1scDpTdGF0dXM+PHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZnhiNGVjOWM4YS00OGViLWZkYTItN2Y3NC1mYTFhMTA1YTk5ZmUiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vZXhhbXBsZS5jb20vc2ltcGxlc2FtbC9zYW1sMi9pZHAvbWV0YWRhdGEucGhwPC9zYW1sOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4NCiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4gICAgDQogIDxkczpSZWZlcmVuY2UgVVJJPSIjcGZ4YjRlYzljOGEtNDhlYi1mZGEyLTdmNzQtZmExYTEwNWE5OWZlIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5obnBUOWN1ZTZ0Qks0SVpPajUwZU1tM21DZ0k9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8+DQo8L2RzOlNpZ25hdHVyZT48c2FtbDpTdWJqZWN0PjxzYW1sOk5hbWVJRCBTUE5hbWVRdWFsaWZpZXI9Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvbWV0YWRhdGEucGhwIiBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMTpuYW1laWQtZm9ybWF0OmVtYWlsQWRkcmVzcyI+NDkyODgyNjE1YWNmMzFjODA5NmI2MjcyNDVkNzZhZTUzMDM2YzA5MDwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyMy0wOC0yM1QwNjo1NzowMVoiIFJlY2lwaWVudD0iaHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9pbmRleC5waHA/YWNzIiBJblJlc3BvbnNlVG89Ik9ORUxPR0lOXzVmZTlkNmU0OTliMmYwOTEzMjA2YWFiM2Y3MTkxNzI5MDQ5YmI4MDciLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAxNC0wMi0xOVQwMTozNjozMVoiIE5vdE9uT3JBZnRlcj0iMjAyMy0wOC0yM1QwNjo1NzowMVoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9tZXRhZGF0YS5waHA8L3NhbWw6QXVkaWVuY2U+PC9zYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PC9zYW1sOkNvbmRpdGlvbnM+PHNhbWw6QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDE0LTAyLTE5VDAxOjM3OjAxWiIgU2Vzc2lvbk5vdE9uT3JBZnRlcj0iMjAxNC0wMi0xOVQwOTozNzowMVoiIFNlc3Npb25JbmRleD0iXzYyNzNkNzdiOGNkZTBjMzMzZWM3OWQyMmE5ZmEwMDAzYjlmZTJkNzVjYiI+PHNhbWw6QXV0aG5Db250ZXh0PjxzYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPnVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkPC9zYW1sOkF1dGhuQ29udGV4dENsYXNzUmVmPjwvc2FtbDpBdXRobkNvbnRleHQ+PC9zYW1sOkF1dGhuU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4=
2 |
--------------------------------------------------------------------------------
/docs/saml2/_sources/onelogin.saml2.rst.txt:
--------------------------------------------------------------------------------
1 | onelogin.saml2 package
2 | ======================
3 |
4 | Submodules
5 | ----------
6 |
7 | onelogin.saml2.auth module
8 | --------------------------
9 |
10 | .. automodule:: onelogin.saml2.auth
11 | :members:
12 | :undoc-members:
13 | :show-inheritance:
14 |
15 | onelogin.saml2.authn\_request module
16 | ------------------------------------
17 |
18 | .. automodule:: onelogin.saml2.authn_request
19 | :members:
20 | :undoc-members:
21 | :show-inheritance:
22 |
23 | onelogin.saml2.compat module
24 | ----------------------------
25 |
26 | .. automodule:: onelogin.saml2.compat
27 | :members:
28 | :undoc-members:
29 | :show-inheritance:
30 |
31 | onelogin.saml2.constants module
32 | -------------------------------
33 |
34 | .. automodule:: onelogin.saml2.constants
35 | :members:
36 | :undoc-members:
37 | :show-inheritance:
38 |
39 | onelogin.saml2.errors module
40 | ----------------------------
41 |
42 | .. automodule:: onelogin.saml2.errors
43 | :members:
44 | :undoc-members:
45 | :show-inheritance:
46 |
47 | onelogin.saml2.idp\_metadata\_parser module
48 | -------------------------------------------
49 |
50 | .. automodule:: onelogin.saml2.idp_metadata_parser
51 | :members:
52 | :undoc-members:
53 | :show-inheritance:
54 |
55 | onelogin.saml2.logout\_request module
56 | -------------------------------------
57 |
58 | .. automodule:: onelogin.saml2.logout_request
59 | :members:
60 | :undoc-members:
61 | :show-inheritance:
62 |
63 | onelogin.saml2.logout\_response module
64 | --------------------------------------
65 |
66 | .. automodule:: onelogin.saml2.logout_response
67 | :members:
68 | :undoc-members:
69 | :show-inheritance:
70 |
71 | onelogin.saml2.metadata module
72 | ------------------------------
73 |
74 | .. automodule:: onelogin.saml2.metadata
75 | :members:
76 | :undoc-members:
77 | :show-inheritance:
78 |
79 | onelogin.saml2.response module
80 | ------------------------------
81 |
82 | .. automodule:: onelogin.saml2.response
83 | :members:
84 | :undoc-members:
85 | :show-inheritance:
86 |
87 | onelogin.saml2.settings module
88 | ------------------------------
89 |
90 | .. automodule:: onelogin.saml2.settings
91 | :members:
92 | :undoc-members:
93 | :show-inheritance:
94 |
95 | onelogin.saml2.utils module
96 | ---------------------------
97 |
98 | .. automodule:: onelogin.saml2.utils
99 | :members:
100 | :undoc-members:
101 | :show-inheritance:
102 |
103 | onelogin.saml2.xml\_templates module
104 | ------------------------------------
105 |
106 | .. automodule:: onelogin.saml2.xml_templates
107 | :members:
108 | :undoc-members:
109 | :show-inheritance:
110 |
111 | onelogin.saml2.xml\_utils module
112 | --------------------------------
113 |
114 | .. automodule:: onelogin.saml2.xml_utils
115 | :members:
116 | :undoc-members:
117 | :show-inheritance:
118 |
119 | onelogin.saml2.xmlparser module
120 | -------------------------------
121 |
122 | .. automodule:: onelogin.saml2.xmlparser
123 | :members:
124 | :undoc-members:
125 | :show-inheritance:
126 |
127 | Module contents
128 | ---------------
129 |
130 | .. automodule:: onelogin.saml2
131 | :members:
132 | :undoc-members:
133 | :show-inheritance:
134 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [build-system]
2 | requires = ["setuptools>=61.0.0"]
3 | build-backend = "setuptools.build_meta"
4 |
5 | [project]
6 | name = "python3-saml"
7 | version = "1.16.0"
8 | description = "Saml Python Toolkit. Add SAML support to your Python software using this library"
9 | license = {file = "LICENSE"}
10 | authors = [
11 | {name = "SAML-Toolkits", email = "contact@iamdigitalservices.com"}
12 | ]
13 | maintainers = [
14 | {name = "Sixto Martin", email = "sixto.martin.garcia@gmail.com"}
15 | ]
16 | readme = "README.md"
17 | keywords = [
18 | "saml",
19 | "saml2",
20 | "sso",
21 | "xmlsec",
22 | "federation",
23 | "identity",
24 | ]
25 | classifiers = [
26 | "Programming Language :: Python :: 3.7",
27 | "Programming Language :: Python :: 3.8",
28 | "Programming Language :: Python :: 3.9",
29 | "Programming Language :: Python :: 3.10",
30 | "Programming Language :: Python :: 3.11",
31 | "Programming Language :: Python :: 3.12",
32 | "Topic :: Software Development :: Libraries :: Python Modules",
33 | ]
34 | dependencies = [
35 | "lxml>=4.6.5,!=4.7.0",
36 | "xmlsec>=1.3.9",
37 | "isodate>=0.6.1",
38 | ]
39 | requires-python = ">=3.7"
40 |
41 | [project.urls]
42 | Homepage = "https://saml.info"
43 | Source = "https://github.com/SAML-Toolkits/python3-saml"
44 | "Bug Tracker" = "https://github.com/SAML-Toolkits/python3-saml/issues"
45 | Changelog = "https://github.com/SAML-Toolkits/python3-saml/blob/master/changelog.md"
46 |
47 | [project.optional-dependencies]
48 | test = [
49 | "coverage[toml]>=4.5.2",
50 | "pytest>=4.6",
51 | ]
52 | lint = [
53 | "black==24.4.2",
54 | "flake8>=3.6.0, <=5.0.0",
55 | ]
56 |
57 | [tool.setuptools]
58 | package-dir = {"" = "src"}
59 |
60 | [tool.setuptools.package-data]
61 | "onelogin.saml2.schemas" = ["*.xsd"]
62 |
63 | [tool.pytest.ini_options]
64 | minversion = "4.6.11"
65 | addopts = "-ra -vvv"
66 | testpaths = [
67 | "tests",
68 | ]
69 | pythonpath = [
70 | "tests",
71 | ]
72 |
73 | [tool.black]
74 | line-length = 200
75 |
76 | [tool.isort]
77 | profile = "black"
78 | # The 'black' profile means:
79 | # multi_line_output = 3
80 | # include_trailing_comma = true
81 | # force_grid_wrap = 0
82 | # use_parentheses = true
83 | # ensure_newline_before_comments = true
84 | # line_length = 88
85 | line_length = 200 # override black provile line_length
86 | force_single_line = true # override black profile multi_line_output
87 | star_first = true
88 | group_by_package = true
89 | force_sort_within_sections = true
90 | lines_after_imports = 2
91 | honor_noqa = true
92 | atomic = true
93 | ignore_comments = true
94 | skip_gitignore = true
95 | src_paths = ['src']
96 |
97 | [tool.coverage.run]
98 | branch = true
99 |
100 | [tool.coverage.paths]
101 | source = [
102 | "src/onelogin/saml2"
103 | ]
104 |
105 | [tool.coverage.report]
106 | # Regexes for lines to exclude from consideration
107 | exclude_lines = [
108 | "pragma: no cover",
109 | "def __repr__",
110 | "if self.debug",
111 | "if debug",
112 | "raise AssertionError",
113 | "raise NotImplementedError",
114 | "if 0:",
115 | "if __name__ == .__main__.:"
116 | ]
117 | show_missing = true
118 | ignore_errors = true
119 |
120 |
121 | [tool.coverage.html]
122 | directory = "coverage_html_report"
--------------------------------------------------------------------------------
/src/onelogin/saml2/schemas/sstc-saml-metadata-ui-v1.0.xsd:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 | Document title: Metadata Extension Schema for SAML V2.0 Metadata Extensions for Login and Discovery User Interface Version 1.0
15 | Document identifier: sstc-saml-metadata-ui-v1.0.xsd
16 | Location: http://docs.oasis-open.org/security/saml/Post2.0/
17 | Revision history:
18 | 16 November 2010:
19 | Added Keywords element/type.
20 | 01 November 2010
21 | Changed filename.
22 | September 2010:
23 | Initial version.
24 |
25 |
26 |
27 |
29 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_saml2.xml.base64:
--------------------------------------------------------------------------------
1 | PD94bWwgdmVyc2lvbj0iMS4wIj8+DQo8UmVzcG9uc2UgeG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMDpwcm90b2NvbCIgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmFzc2VydGlvbiINCiAgICB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOnByb3RvY29sIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIg0KICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIElzc3VlSW5zdGFudD0iMjAwOC0xMi0xMFQxNDoxMjoxNC44MTdaIg0KICAgIE1ham9yVmVyc2lvbj0iMSIgTWlub3JWZXJzaW9uPSIxIiBSZWNpcGllbnQ9Imh0dHBzOi8vZWlnZXIuaWFkLnZ0LmVkdS9kYXQvaG9tZS5kbyINCiAgICBSZXNwb25zZUlEPSJfNWM5NGI1NDMxYzU0MDM2NWU1YTcwYjI4NzRiNzU5OTYiPg0KICAgICAgPFN0YXR1cz4NCiAgICAgICAgPFN0YXR1c0NvZGUgVmFsdWU9InNhbWxwOlN1Y2Nlc3MiPg0KICAgICAgICA8L1N0YXR1c0NvZGU+DQogICAgICA8L1N0YXR1cz4NCiAgICAgIDxBc3NlcnRpb24geG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMDphc3NlcnRpb24iIEFzc2VydGlvbklEPSJfZTVjMjNmZjdhMzg4OWUxMmZhMDE4MDJhNDczMzE2NTMiDQogICAgICBJc3N1ZUluc3RhbnQ9IjIwMDgtMTItMTBUMTQ6MTI6MTQuODE3WiIgSXNzdWVyPSJsb2NhbGhvc3QiIE1ham9yVmVyc2lvbj0iMSINCiAgICAgIE1pbm9yVmVyc2lvbj0iMSI+DQogICAgICAgIDxDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAwOC0xMi0xMFQxNDoxMjoxNC44MTdaIiBOb3RPbk9yQWZ0ZXI9IjI5OTMtMTItMTBUMTQ6MTI6NDQuODE3WiI+DQogICAgICAgICAgPEF1ZGllbmNlUmVzdHJpY3Rpb25Db25kaXRpb24+DQogICAgICAgICAgICA8QXVkaWVuY2U+DQogICAgICAgICAgICAgIGh0dHBzOi8vc29tZS1zZXJ2aWNlLmV4YW1wbGUuY29tL2FwcC8NCiAgICAgICAgICAgIDwvQXVkaWVuY2U+DQogICAgICAgICAgPC9BdWRpZW5jZVJlc3RyaWN0aW9uQ29uZGl0aW9uPg0KICAgICAgICA8L0NvbmRpdGlvbnM+DQogICAgICAgIDxBdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICAgICAgPFN1YmplY3Q+DQogICAgICAgICAgICA8TmFtZUlkZW50aWZpZXI+am9obnE8L05hbWVJZGVudGlmaWVyPg0KICAgICAgICAgICAgPFN1YmplY3RDb25maXJtYXRpb24+DQogICAgICAgICAgICAgIDxDb25maXJtYXRpb25NZXRob2Q+DQogICAgICAgICAgICAgICAgdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmNtOmFydGlmYWN0DQogICAgICAgICAgICAgIDwvQ29uZmlybWF0aW9uTWV0aG9kPg0KICAgICAgICAgICAgPC9TdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgICAgICAgIDwvU3ViamVjdD4NCiAgICAgICAgICA8QXR0cmlidXRlIEF0dHJpYnV0ZU5hbWU9InVpZCIgQXR0cmlidXRlTmFtZXNwYWNlPSJodHRwOi8vd3d3LmphLXNpZy5vcmcvcHJvZHVjdHMvY2FzLyI+DQogICAgICAgICAgICA8QXR0cmlidXRlVmFsdWU+MTIzNDU8L0F0dHJpYnV0ZVZhbHVlPg0KICAgICAgICAgIDwvQXR0cmlidXRlPg0KICAgICAgICAgIDxBdHRyaWJ1dGUgQXR0cmlidXRlTmFtZT0iZ3JvdXBNZW1iZXJzaGlwIiBBdHRyaWJ1dGVOYW1lc3BhY2U9Imh0dHA6Ly93d3cuamEtc2lnLm9yZy9wcm9kdWN0cy9jYXMvIj4NCiAgICAgICAgICAgIDxBdHRyaWJ1dGVWYWx1ZT4NCiAgICAgICAgICAgICAgdXVnaWQ9bWlkZGxld2FyZS5zdGFmZixvdT1Hcm91cHMsZGM9dnQsZGM9ZWR1DQogICAgICAgICAgICA8L0F0dHJpYnV0ZVZhbHVlPg0KICAgICAgICAgIDwvQXR0cmlidXRlPg0KICAgICAgICAgIDxBdHRyaWJ1dGUgQXR0cmlidXRlTmFtZT0iZWR1UGVyc29uQWZmaWxpYXRpb24iIEF0dHJpYnV0ZU5hbWVzcGFjZT0iaHR0cDovL3d3dy5qYS1zaWcub3JnL3Byb2R1Y3RzL2Nhcy8iPg0KICAgICAgICAgICAgPEF0dHJpYnV0ZVZhbHVlPnN0YWZmPC9BdHRyaWJ1dGVWYWx1ZT4NCiAgICAgICAgICA8L0F0dHJpYnV0ZT4NCiAgICAgICAgICA8QXR0cmlidXRlIEF0dHJpYnV0ZU5hbWU9ImFjY291bnRTdGF0ZSIgQXR0cmlidXRlTmFtZXNwYWNlPSJodHRwOi8vd3d3LmphLXNpZy5vcmcvcHJvZHVjdHMvY2FzLyI+DQogICAgICAgICAgICA8QXR0cmlidXRlVmFsdWU+QUNUSVZFPC9BdHRyaWJ1dGVWYWx1ZT4NCiAgICAgICAgICA8L0F0dHJpYnV0ZT4NCiAgICAgICAgPC9BdHRyaWJ1dGVTdGF0ZW1lbnQ+DQogICAgICAgIDxBdXRoZW50aWNhdGlvblN0YXRlbWVudCBBdXRoZW50aWNhdGlvbkluc3RhbnQ9IjIwMDgtMTItMTBUMTQ6MTI6MTQuNzQxWiINCiAgICAgICAgQXV0aGVudGljYXRpb25NZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjEuMDphbTpwYXNzd29yZCI+DQogICAgICAgICAgPFN1YmplY3Q+DQogICAgICAgICAgICA8TmFtZUlkZW50aWZpZXI+am9obnE8L05hbWVJZGVudGlmaWVyPg0KICAgICAgICAgICAgPFN1YmplY3RDb25maXJtYXRpb24+DQogICAgICAgICAgICAgIDxDb25maXJtYXRpb25NZXRob2Q+DQogICAgICAgICAgICAgICAgdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4wOmNtOmFydGlmYWN0DQogICAgICAgICAgICAgIDwvQ29uZmlybWF0aW9uTWV0aG9kPg0KICAgICAgICAgICAgPC9TdWJqZWN0Q29uZmlybWF0aW9uPg0KICAgICAgICAgIDwvU3ViamVjdD4NCiAgICAgICAgPC9BdXRoZW50aWNhdGlvblN0YXRlbWVudD4NCiAgICAgIDwvQXNzZXJ0aW9uPg0KICAgIDwvUmVzcG9uc2U+
2 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/no_id.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjA1OjQ5WiIgRGVzdGluYXRpb249Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvaW5kZXgucGhwP2FjcyIgSW5SZXNwb25zZVRvPSJPTkVMT0dJTl9hZjNkNGE3MTBmYzhiMzA1ODg0Yjk2ZDAwOTRhYjYyODgwMmY1NjkyIj48c2FtbDpJc3N1ZXI+aHR0cHM6Ly9leGFtcGxlLmNvbS9zaW1wbGVzYW1sL3NhbWwyL2lkcC9tZXRhZGF0YS5waHA8L3NhbWw6SXNzdWVyPjxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZng3ZTQ4ZmQ3NS1jZTJiLTYwZWQtMjllZS1lNzk4NDZjOTU5YzYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjA1OjQ5WiI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vZXhhbXBsZS5jb20vc2ltcGxlc2FtbC9zYW1sMi9pZHAvbWV0YWRhdGEucGhwPC9zYW1sOklzc3Vlcj4NCjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9tZXRhZGF0YS5waHAiIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj40OTI4ODI2MTVhY2YzMWM4MDk2YjYyNzI0NWQ3NmFlNTMwMzZjMDkwPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDAxOjEwOjQ5WiIgUmVjaXBpZW50PSJodHRwczovL2V4YW1wbGUuY29tL25ld29uZWxvZ2luL2RlbW8xL2luZGV4LnBocD9hY3MiIEluUmVzcG9uc2VUbz0iT05FTE9HSU5fYWYzZDRhNzEwZmM4YjMwNTg4NGI5NmQwMDk0YWI2Mjg4MDJmNTY5MiIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE0LTAyLTE5VDAxOjA1OjE5WiIgTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDAxOjEwOjQ5WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwczovL2V4YW1wbGUuY29tL25ld29uZWxvZ2luL2RlbW8xL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTQtMDItMThUMTk6NDI6MjBaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDA5OjA1OjQ5WiIgU2Vzc2lvbkluZGV4PSJfMGY0ZjE4OGRjMWJmZDNiZmVhMzZhMTYzNGE3NDQxNTgzYWZjM2IzNzgxIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1aWQiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnVzZXI8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlckBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJjbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dGVzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJlZHVQZXJzb25BZmZpbGlhdGlvbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZG1pbjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==
2 |
--------------------------------------------------------------------------------
/tests/data/responses/open_saml_response.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | https://idm.orademo.com
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | uHuSry39P16Yh7srS32xESmj4Lw=
17 |
18 |
19 | fdghdfggfd=
20 |
21 |
22 | dfghjkl
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | https://idm.orademo.com
31 |
32 | someone@example.org
33 |
34 |
35 |
36 |
37 |
38 |
39 | hello.com
40 |
41 |
42 |
43 |
44 | urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
45 |
46 |
47 |
48 |
49 | Someone
50 |
51 |
52 | Special
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/tests/data/responses/invalids/not_after_failed.xml.base64:
--------------------------------------------------------------------------------
1 | PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJwZnhmYTk3ZWVkNS03NTg4LTBkMjMtMmFkNy1mYTY2ZjI4OTM3ODgiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjA1OjQ5WiIgRGVzdGluYXRpb249Imh0dHBzOi8vZXhhbXBsZS5jb20vbmV3b25lbG9naW4vZGVtbzEvaW5kZXgucGhwP2FjcyIgSW5SZXNwb25zZVRvPSJPTkVMT0dJTl9hZjNkNGE3MTBmYzhiMzA1ODg0Yjk2ZDAwOTRhYjYyODgwMmY1NjkyIj48c2FtbDpJc3N1ZXI+aHR0cHM6Ly9leGFtcGxlLmNvbS9zaW1wbGVzYW1sL3NhbWwyL2lkcC9tZXRhZGF0YS5waHA8L3NhbWw6SXNzdWVyPjxzYW1sOkFzc2VydGlvbiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIElEPSJwZng3ZTQ4ZmQ3NS1jZTJiLTYwZWQtMjllZS1lNzk4NDZjOTU5YzYiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDE0LTAyLTE5VDAxOjA1OjQ5WiI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vZXhhbXBsZS5jb20vc2ltcGxlc2FtbC9zYW1sMi9pZHAvbWV0YWRhdGEucGhwPC9zYW1sOklzc3Vlcj4NCjxzYW1sOlN1YmplY3Q+PHNhbWw6TmFtZUlEIFNQTmFtZVF1YWxpZmllcj0iaHR0cHM6Ly9leGFtcGxlLmNvbS9uZXdvbmVsb2dpbi9kZW1vMS9tZXRhZGF0YS5waHAiIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj40OTI4ODI2MTVhY2YzMWM4MDk2YjYyNzI0NWQ3NmFlNTMwMzZjMDkwPC9zYW1sOk5hbWVJRD48c2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDAxOjEwOjQ5WiIgUmVjaXBpZW50PSJodHRwczovL2V4YW1wbGUuY29tL25ld29uZWxvZ2luL2RlbW8xL2luZGV4LnBocD9hY3MiIEluUmVzcG9uc2VUbz0iT05FTE9HSU5fYWYzZDRhNzEwZmM4YjMwNTg4NGI5NmQwMDk0YWI2Mjg4MDJmNTY5MiIvPjwvc2FtbDpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDpTdWJqZWN0PjxzYW1sOkNvbmRpdGlvbnMgTm90QmVmb3JlPSIyMDE0LTAyLTE5VDAxOjA1OjE5WiIgTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDAxOjEwOjQ5WiI+PHNhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48c2FtbDpBdWRpZW5jZT5odHRwczovL2V4YW1wbGUuY29tL25ld29uZWxvZ2luL2RlbW8xL21ldGFkYXRhLnBocDwvc2FtbDpBdWRpZW5jZT48L3NhbWw6QXVkaWVuY2VSZXN0cmljdGlvbj48L3NhbWw6Q29uZGl0aW9ucz48c2FtbDpBdXRoblN0YXRlbWVudCBBdXRobkluc3RhbnQ9IjIwMTQtMDItMThUMTk6NDI6MjBaIiBTZXNzaW9uTm90T25PckFmdGVyPSIyMDE0LTAyLTE5VDA5OjA1OjQ5WiIgU2Vzc2lvbkluZGV4PSJfMGY0ZjE4OGRjMWJmZDNiZmVhMzZhMTYzNGE3NDQxNTgzYWZjM2IzNzgxIj48c2FtbDpBdXRobkNvbnRleHQ+PHNhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmQ8L3NhbWw6QXV0aG5Db250ZXh0Q2xhc3NSZWY+PC9zYW1sOkF1dGhuQ29udGV4dD48L3NhbWw6QXV0aG5TdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlU3RhdGVtZW50PjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJ1aWQiIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPnVzZXI8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0ibWFpbCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlckBleGFtcGxlLmNvbTwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJjbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dGVzdDwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJzbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjxzYW1sOkF0dHJpYnV0ZSBOYW1lPSJlZHVQZXJzb25BZmZpbGlhdGlvbiIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dXNlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj5hZG1pbjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48L3NhbWw6QXR0cmlidXRlPjwvc2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PC9zYW1sOkFzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==
2 |
--------------------------------------------------------------------------------