@@ -279,7 +279,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
279279 $ this ->_errors = array ();
280280 $ this ->_lastError = $ this ->_lastErrorException = null ;
281281 if (isset ($ _GET ['SAMLResponse ' ])) {
282- $ logoutResponse = new LogoutResponse ($ this ->_settings , $ _GET ['SAMLResponse ' ]);
282+ $ logoutResponse = $ this -> buildLogoutResponse ($ this ->_settings , $ _GET ['SAMLResponse ' ]);
283283 $ this ->_lastResponse = $ logoutResponse ->getXML ();
284284 if (!$ logoutResponse ->isValid ($ requestId , $ retrieveParametersFromServer )) {
285285 $ this ->_errors [] = 'invalid_logout_response ' ;
@@ -299,7 +299,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
299299 }
300300 }
301301 } else if (isset ($ _GET ['SAMLRequest ' ])) {
302- $ logoutRequest = new LogoutRequest ($ this ->_settings , $ _GET ['SAMLRequest ' ]);
302+ $ logoutRequest = $ this -> buildLogoutRequest ($ this ->_settings , $ _GET ['SAMLRequest ' ]);
303303 $ this ->_lastRequest = $ logoutRequest ->getXML ();
304304 if (!$ logoutRequest ->isValid ($ retrieveParametersFromServer )) {
305305 $ this ->_errors [] = 'invalid_logout_request ' ;
@@ -315,7 +315,7 @@ public function processSLO($keepLocalSession = false, $requestId = null, $retrie
315315 }
316316 $ inResponseTo = $ logoutRequest ->id ;
317317 $ this ->_lastMessageId = $ logoutRequest ->id ;
318- $ responseBuilder = new LogoutResponse ($ this ->_settings );
318+ $ responseBuilder = $ this -> buildLogoutResponse ($ this ->_settings );
319319 $ responseBuilder ->build ($ inResponseTo );
320320 $ this ->_lastResponse = $ responseBuilder ->getXML ();
321321
@@ -594,7 +594,7 @@ public function logout($returnTo = null, array $parameters = array(), $nameId =
594594 $ nameIdFormat = $ this ->_nameidFormat ;
595595 }
596596
597- $ logoutRequest = new LogoutRequest ($ this ->_settings , null , $ nameId , $ sessionIndex , $ nameIdFormat , $ nameIdNameQualifier , $ nameIdSPNameQualifier );
597+ $ logoutRequest = $ this -> buildLogoutRequest ($ this ->_settings , null , $ nameId , $ sessionIndex , $ nameIdFormat , $ nameIdNameQualifier , $ nameIdSPNameQualifier );
598598
599599 $ this ->_lastRequest = $ logoutRequest ->getXML ();
600600 $ this ->_lastRequestID = $ logoutRequest ->id ;
@@ -670,11 +670,42 @@ public function getLastRequestID()
670670 *
671671 * @return AuthnRequest The AuthnRequest object
672672 */
673- public function buildAuthnRequest ($ settings , $ forceAuthn , $ isPassive , $ setNameIdPolicy , $ nameIdValueReq = null )
673+ public function buildAuthnRequest (Settings $ settings , $ forceAuthn , $ isPassive , $ setNameIdPolicy , $ nameIdValueReq = null )
674674 {
675675 return new AuthnRequest ($ settings , $ forceAuthn , $ isPassive , $ setNameIdPolicy , $ nameIdValueReq );
676676 }
677677
678+ /**
679+ * Creates an LogoutRequest
680+ *
681+ * @param Settings $settings Settings
682+ * @param string|null $request A UUEncoded Logout Request.
683+ * @param string|null $nameId The NameID that will be set in the LogoutRequest.
684+ * @param string|null $sessionIndex The SessionIndex (taken from the SAML Response in the SSO process).
685+ * @param string|null $nameIdFormat The NameID Format will be set in the LogoutRequest.
686+ * @param string|null $nameIdNameQualifier The NameID NameQualifier will be set in the LogoutRequest.
687+ * @param string|null $nameIdSPNameQualifier The NameID SP NameQualifier will be set in the LogoutRequest.
688+ */
689+ public function buildLogoutRequest (Settings $ settings , $ request = null , $ nameId = null , $ sessionIndex = null , $ nameIdFormat = null , $ nameIdNameQualifier = null , $ nameIdSPNameQualifier = null )
690+ {
691+ return new LogoutRequest ($ settings , $ request , $ nameId , $ sessionIndex , $ nameIdFormat , $ nameIdNameQualifier , $ nameIdSPNameQualifier );
692+ }
693+
694+ /**
695+ * Constructs a Logout Response object (Initialize params from settings and if provided
696+ * load the Logout Response.
697+ *
698+ * @param Settings $settings Settings.
699+ * @param string|null $response An UUEncoded SAML Logout response from the IdP.
700+ *
701+ * @throws Error
702+ * @throws Exception
703+ */
704+ public function buildLogoutResponse (Settings $ settings , $ response = null )
705+ {
706+ return new LogoutResponse ($ settings , $ response );
707+ }
708+
678709 /**
679710 * Generates the Signature for a SAML Request
680711 *
0 commit comments