diff --git a/.gitignore b/.gitignore index ad382d79..a424f0e3 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ __pycache_ /venv .coverage .pypirc +.idea/ *.key *.crt diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 00000000..8148b784 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +python-saml \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..97626ba4 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..bf5e71d9 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + Python + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 00000000..5172c0c5 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/python-saml.iml b/.idea/python-saml.iml new file mode 100644 index 00000000..7b12246a --- /dev/null +++ b/.idea/python-saml.iml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..7295f575 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $USER_HOME$/.subversion + + + + + 1482932200463 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/onelogin/saml2/auth.py b/src/onelogin/saml2/auth.py index ab8fb2af..1fd9551e 100644 --- a/src/onelogin/saml2/auth.py +++ b/src/onelogin/saml2/auth.py @@ -271,7 +271,7 @@ def get_last_request_id(self): """ return self.__last_request_id - def login(self, return_to=None, force_authn=False, is_passive=False, set_nameid_policy=True): + def login(self, return_to=None, force_authn=False, is_passive=False, set_nameid_policy=True, deflate=False): """ Initiates the SSO process. @@ -287,13 +287,16 @@ def login(self, return_to=None, force_authn=False, is_passive=False, set_nameid_ :param set_nameid_policy: Optional argument. When true the AuthNRequest will set a nameIdPolicy element. :type set_nameid_policy: bool + :param deflate: Optional argument. When true, compress request + :type deflate: bool + :returns: Redirection URL :rtype: string """ authn_request = OneLogin_Saml2_Authn_Request(self.__settings, force_authn, is_passive, set_nameid_policy) self.__last_request = authn_request.get_xml() self.__last_request_id = authn_request.get_id() - saml_request = authn_request.get_request() + saml_request = authn_request.get_request(deflate) parameters = {'SAMLRequest': saml_request} if return_to is not None: diff --git a/src/onelogin/saml2/authn_request.py b/src/onelogin/saml2/authn_request.py index 636a6888..ff3f19fa 100644 --- a/src/onelogin/saml2/authn_request.py +++ b/src/onelogin/saml2/authn_request.py @@ -9,6 +9,7 @@ """ from base64 import b64encode +from django.conf import settings from onelogin.saml2.constants import OneLogin_Saml2_Constants from onelogin.saml2.utils import OneLogin_Saml2_Utils @@ -128,7 +129,7 @@ def __init__(self, settings, force_authn=False, is_passive=False, set_nameid_pol self.__authn_request = request - def get_request(self, deflate=True): + def get_request(self, deflate=None): """ Returns unsigned AuthnRequest. :param deflate: It makes the deflate process optional @@ -136,7 +137,8 @@ def get_request(self, deflate=True): :return: AuthnRequest maybe deflated and base64 encoded :rtype: str object """ - if deflate: + + if deflate or getattr(settings, 'ENABLE_SAML_COMPRESSION', True): request = OneLogin_Saml2_Utils.deflate_and_base64_encode(self.__authn_request) else: request = b64encode(self.__authn_request)