getBoolean('enable.wsfed-sp', false)) throw new SimpleSAML_Error_Error('NOACCESS'); if (isset($_REQUEST['RelayState'])) { $returnTo = SimpleSAML_Utilities::checkURLAllowed($_REQUEST['RelayState']); } else { throw new SimpleSAML_Error_Error('NORELAYSTATE'); } if (isset($session) ) { try { $metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler(); $idpentityid = $session->getAuthData('wsfed', 'saml:sp:IdP'); $spentityid = isset($_GET['spentityid']) ? $_GET['spentityid'] : $metadata->getMetaDataCurrentEntityID(); /** * Create a logout request */ $session->doLogout('wsfed'); SimpleSAML_Logger::info('WS-Fed - SP.initSLO: SP (' . $spentityid . ') is sending logout request to IdP (' . $idpentityid . ')'); $idpmeta = $metadata->getMetaData($idpentityid, 'wsfed-idp-remote'); SimpleSAML_Utilities::redirectTrustedURL($idpmeta['prp'], array( 'wa' => 'wsignout1.0', 'wct' => gmdate('Y-m-d\TH:i:s\Z', time()), 'wtrealm' => $spentityid, 'wctx' => $returnTo )); } catch(Exception $exception) { throw new SimpleSAML_Error_Error('CREATEREQUEST', $exception); } } else { SimpleSAML_Logger::info('WS-Fed - SP.initSLO: User is already logged out. Go back to relaystate'); SimpleSAML_Utilities::redirectTrustedURL($returnTo); } ?>