<?php 
 
/** 
 * WARNING: 
 * 
 * THIS FILE IS DEPRECATED AND WILL BE REMOVED IN FUTURE VERSIONS 
 * 
 * @deprecated 
 */ 
 
require_once('../../_include.php'); 
 
$config = SimpleSAML_Configuration::getInstance(); 
 
SimpleSAML_Logger::warning('The file shib13/sp/AssertionConsumerService.php is deprecated and will be removed in future versions.'); 
 
$session = SimpleSAML_Session::getSessionFromRequest(); 
 
 
/** 
 * Finish login operation. 
 * 
 * This helper function finishes a login operation and redirects the user back to the page which 
 * requested the login. 
 * 
 * @param array $authProcState  The state of the authentication process. 
 */ 
function finishLogin($authProcState) { 
    assert('is_array($authProcState)'); 
    assert('array_key_exists("Attributes", $authProcState)'); 
    assert('array_key_exists("core:shib13-sp:NameID", $authProcState)'); 
    assert('array_key_exists("core:shib13-sp:SessionIndex", $authProcState)'); 
    assert('array_key_exists("core:shib13-sp:TargetURL", $authProcState)'); 
    assert('array_key_exists("Source", $authProcState)'); 
    assert('array_key_exists("entityid", $authProcState["Source"])'); 
 
    $authData = array( 
        'Attributes' => $authProcState['Attributes'], 
        'saml:sp:NameID' => $authProcState['core:shib13-sp:NameID'], 
        'saml:sp:SessionIndex' => $authProcState['core:shib13-sp:SessionIndex'], 
        'saml:sp:IdP' => $authProcState['Source']['entityid'], 
    ); 
 
    global $session; 
    $session->doLogin('shib13', $authData); 
 
    SimpleSAML_Utilities::redirectTrustedURL($authProcState['core:shib13-sp:TargetURL']); 
} 
 
 
SimpleSAML_Logger::info('Shib1.3 - SP.AssertionConsumerService: Accessing Shibboleth 1.3 SP endpoint AssertionConsumerService'); 
 
if (!$config->getBoolean('enable.shib13-sp', false)) 
    throw new SimpleSAML_Error_Error('NOACCESS'); 
 
if (array_key_exists(SimpleSAML_Auth_ProcessingChain::AUTHPARAM, $_REQUEST)) { 
    /* We have returned from the authentication processing filters. */ 
 
    $authProcId = $_REQUEST[SimpleSAML_Auth_ProcessingChain::AUTHPARAM]; 
 
    // sanitize the input 
    $sid = SimpleSAML_Utilities::parseStateID($authProcId); 
    if (!is_null($sid['url'])) { 
        SimpleSAML_Utilities::checkURLAllowed($sid['url']); 
    } 
 
    $authProcState = SimpleSAML_Auth_ProcessingChain::fetchProcessedState($authProcId); 
    finishLogin($authProcState); 
} 
 
if (empty($_POST['SAMLResponse']))  
    throw new SimpleSAML_Error_Error('ACSPARAMS', $exception); 
 
try { 
 
    $metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler(); 
 
    $binding = new SimpleSAML_Bindings_Shib13_HTTPPost($config, $metadata); 
    $authnResponse = $binding->decodeResponse($_POST); 
 
    $authnResponse->validate(); 
 
    /* Successfully authenticated. */ 
 
    $idpmetadata = $metadata->getMetadata($authnResponse->getIssuer(), 'shib13-idp-remote'); 
 
    SimpleSAML_Logger::info('Shib1.3 - SP.AssertionConsumerService: Successful authentication to IdP ' . $idpmetadata['entityid']); 
 
 
    SimpleSAML_Logger::stats('shib13-sp-SSO ' . $metadata->getMetaDataCurrentEntityID('shib13-sp-hosted') . ' ' . $idpmetadata['entityid'] . ' NA'); 
 
 
    $relayState = $authnResponse->getRelayState(); 
    if (!isset($relayState)) { 
        throw new SimpleSAML_Error_Error('NORELAYSTATE'); 
    } 
 
    $spmetadata = $metadata->getMetaData(NULL, 'shib13-sp-hosted'); 
 
    /* Begin module attribute processing */ 
    $pc = new SimpleSAML_Auth_ProcessingChain($idpmetadata, $spmetadata, 'sp'); 
 
    $authProcState = array( 
        'core:shib13-sp:NameID' => $authnResponse->getNameID(), 
        'core:shib13-sp:SessionIndex' => $authnResponse->getSessionIndex(), 
        'core:shib13-sp:TargetURL' => SimpleSAML_Utilities::checkURLAllowed($relayState), 
        'ReturnURL' => SimpleSAML_Utilities::selfURLNoQuery(), 
        'Attributes' => $authnResponse->getAttributes(), 
        'Destination' => $spmetadata, 
        'Source' => $idpmetadata, 
        ); 
 
    $pc->processState($authProcState); 
    /* Since this function returns, processing has completed and attributes have 
     * been updated. 
     */ 
 
    finishLogin($authProcState); 
 
} catch(Exception $exception) { 
    throw new SimpleSAML_Error_Error('GENERATEAUTHNRESPONSE', $exception); 
} 
 
 
?>
 
 |