@@ -378,7 +378,35 @@ def get_last_authn_contexts(self):
378378 """
379379 return self .__last_authn_contexts
380380
381- def login (self , return_to = None , force_authn = False , is_passive = False , set_nameid_policy = True , name_id_value_req = None ):
381+ def _create_authn_request (
382+ self , force_authn = False , is_passive = False , set_nameid_policy = True , name_id_value_req = None
383+ ):
384+ authn_request = self .authn_request_class (self .__settings , force_authn , is_passive , set_nameid_policy , name_id_value_req )
385+
386+ self .__last_request = authn_request .get_xml ()
387+ self .__last_request_id = authn_request .get_id ()
388+ return authn_request
389+
390+ def login_post (self , return_to = None , ** authn_kwargs ):
391+ authn_request = self ._create_authn_request (** authn_kwargs )
392+ saml_request = OneLogin_Saml2_Utils .b64encode (
393+ OneLogin_Saml2_Utils .add_sign (
394+ authn_request .get_request (deflate = False , base64_encode = False ),
395+ self .__settings .get_sp_key (), self .__settings .get_sp_cert (),
396+ sign_algorithm = OneLogin_Saml2_Constants .RSA_SHA256 ,
397+ digest_algorithm = OneLogin_Saml2_Constants .SHA256 ,),
398+
399+ )
400+ parameters = {'SAMLRequest' : saml_request }
401+
402+ if return_to is not None :
403+ parameters ['RelayState' ] = return_to
404+ else :
405+ parameters ['RelayState' ] = OneLogin_Saml2_Utils .get_self_url_no_query (self .__request_data )
406+
407+ return self .get_sso_url (), parameters
408+
409+ def login (self , return_to = None , ** authn_kwargs ):
382410 """
383411 Initiates the SSO process.
384412
@@ -400,9 +428,7 @@ def login(self, return_to=None, force_authn=False, is_passive=False, set_nameid_
400428 :returns: Redirection URL
401429 :rtype: string
402430 """
403- authn_request = self .authn_request_class (self .__settings , force_authn , is_passive , set_nameid_policy , name_id_value_req )
404- self .__last_request = authn_request .get_xml ()
405- self .__last_request_id = authn_request .get_id ()
431+ authn_request = self ._create_authn_request (** authn_kwargs )
406432
407433 saml_request = authn_request .get_request ()
408434 parameters = {'SAMLRequest' : saml_request }
0 commit comments