File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -244,6 +244,25 @@ function saml_acs() {
244244
245245 $ errors = $ auth ->getErrors ();
246246 if (!empty ($ errors )) {
247+ // Don't raise an error on passive mode
248+ $ errorReason = $ auth ->getLastErrorReason ();
249+ if (strpos ($ errorReason , 'Responder ' ) != false && strpos ($ errorReason , 'NoPassive ' ) !== false ) {
250+ $ relayState = esc_url_raw ( $ _REQUEST ['RelayState ' ], ['https ' ,'http ' ]);
251+
252+ if (empty ($ relayState )) {
253+ wp_redirect (home_url ());
254+ } else {
255+ if (strpos ($ relayState , 'redirect_to ' ) !== false ) {
256+ $ query = wp_parse_url ($ relayState , PHP_URL_QUERY );
257+ parse_str ($ query , $ parameters );
258+ redirect_to_relaystate_if_trusted (urldecode ($ parameters ['redirect_to ' ]));
259+ } else {
260+ redirect_to_relaystate_if_trusted ($ relayState );
261+ }
262+ exit ();
263+ }
264+ }
265+
247266 echo '<br> ' .__ ("There was at least one error processing the SAML Response " ).': ' ;
248267 foreach ($ errors as $ error ) {
249268 echo esc_html ($ error ).'<br> ' ;
You can’t perform that action at this time.
0 commit comments