/** * Redirect to page setting CDC. * * @param array &$state The request state. */ public function process(&$state) { assert('is_array($state)'); if (!isset($state['Source']['entityid'])) { SimpleSAML_Logger::warning('saml:CDC: Could not find IdP entityID.'); return; } /* Save state and build request. */ $id = SimpleSAML_Auth_State::saveState($state, 'cdc:resume'); $returnTo = SimpleSAML_Module::getModuleURL('cdc/resume.php', array('domain' => $this->domain)); $params = array('id' => $id, 'entityID' => $state['Source']['entityid']); $this->client->sendRequest($returnTo, 'append', $params); }
<?php if (!array_key_exists('domain', $_REQUEST)) { throw new SimpleSAML_Error_BadRequest('Missing domain to CDC resume handler.'); } $domain = (string) $_REQUEST['domain']; $client = new sspmod_cdc_Client($domain); $response = $client->getResponse(); if ($response === NULL) { throw new SimpleSAML_Error_BadRequest('Missing CDC response to CDC resume handler.'); } if (!isset($response['id'])) { throw new SimpleSAML_Error_BadRequest('CDCResponse without id.'); } // sanitize the input $sid = SimpleSAML_Utilities::parseStateID($response['id']); if (!is_null($sid['url'])) { SimpleSAML_Utilities::checkURLAllowed($sid['url']); } $state = SimpleSAML_Auth_State::loadState($response['id'], 'cdc:resume'); SimpleSAML_Auth_ProcessingChain::resumeProcessing($state);