File: retry.php

package info (click to toggle)
simplesamlphp 1.19.7-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 42,920 kB
  • sloc: php: 202,044; javascript: 14,867; xml: 2,700; sh: 225; perl: 82; makefile: 70; python: 5
file content (34 lines) | stat: -rw-r--r-- 1,161 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php

/**
 *
 * @author Mathias Meisfjordskar, University of Oslo.
 *         <mathias.meisfjordskar@usit.uio.no>
 * @package SimpleSAMLphp
 *
 */

$state = \SimpleSAML\Auth\State::loadState(
    $_REQUEST['AuthState'],
    \SimpleSAML\Module\negotiate\Auth\Source\Negotiate::STAGEID
);

$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler();
$idpid = $metadata->getMetaDataCurrentEntityID('saml20-idp-hosted', 'metaindex');
$idpmeta = $metadata->getMetaData($idpid, 'saml20-idp-hosted');

if (isset($idpmeta['auth'])) {
    $source = \SimpleSAML\Auth\Source::getById($idpmeta['auth']);
    if ($source === null) {
        throw new \SimpleSAML\Error\BadRequest('Invalid AuthId "' . $idpmeta['auth'] . '" - not found.');
    }

    $session = \SimpleSAML\Session::getSessionFromRequest();
    $session->setData('negotiate:disable', 'session', false, 86400); //24*60*60=86400
    \SimpleSAML\Logger::debug('Negotiate(retry) - session enabled, retrying.');
    $source->authenticate($state);
    assert(false);
} else {
    \SimpleSAML\Logger::error('Negotiate - retry - no "auth" parameter found in IdP metadata.');
    assert(false);
}