PHP Classes

File: web/SSO/SAML/example-simple/attributequery.php

Recommend this page to a friend!
  Classes of william amed   Raptor 2   web/SSO/SAML/example-simple/attributequery.php   Download  
File: web/SSO/SAML/example-simple/attributequery.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Raptor 2
Framework that takes routes from annotations
Author: By
Last change:
Date: 8 years ago
Size: 5,386 bytes
 

Contents

Class file image Download
<?php

/**
 * WARNING:
 *
 * THIS FILE IS DEPRECATED AND WILL BE REMOVED IN FUTURE VERSIONS
 *
 * @deprecated
 */

require_once('../_include.php');

$session = SimpleSAML_Session::getSessionFromRequest();
$metadata = SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler();

SimpleSAML_Logger::warning('The file example-simple/attributequery.php is deprecated and will be removed in future versions.');

$spEntityId = $metadata->getMetaDataCurrentEntityID('saml20-sp-hosted');

function
sendQuery($dataId, $url, $nameId) {
   
assert('is_string($dataId)');
   
assert('is_string($url)');
   
assert('is_array($nameId)');

   
SimpleSAML_Logger::debug('attributequery - sending request');

   
$query = new SAML2_AttributeQuery();
   
$query->setRelayState($dataId);
   
$query->setDestination($url);
   
$query->setIssuer($GLOBALS['spEntityId']);
   
$query->setNameId($nameId);

   
$binding = new SAML2_HTTPRedirect();
   
$binding->send($query);
}

function
handleResponse() {
    try {
       
$binding = SAML2_Binding::getCurrentBinding();
       
$response = $binding->receive();
    } catch (
Exception $e) {
        return;
    }

   
SimpleSAML_Logger::debug('attributequery - received message.');

    if (!(
$response instanceof SAML2_Response)) {
        throw new
SimpleSAML_Error_Exception('Unexpected message received to attribute query example.');
    }

   
$idpEntityId = $response->getIssuer();
    if (
$idpEntityId === NULL) {
        throw new
SimpleSAML_Error_Exception('Missing issuer in response.');
    }

   
$idpMetadata = $GLOBALS['metadata']->getMetaDataConfig($idpEntityId, 'saml20-idp-remote');
   
$spMetadata = $GLOBALS['metadata']->getMetaDataConfig($GLOBALS['spEntityId'], 'saml20-sp-hosted');

   
$assertion = sspmod_saml_Message::processResponse($spMetadata, $idpMetadata, $response);
    if (
count($assertion) > 1) {
        throw new
SimpleSAML_Error_Exception('More than one assertion in received response.');
    }
   
$assertion = $assertion[0];

   
$dataId = $response->getRelayState();
    if (
$dataId === NULL) {
        throw new
SimpleSAML_Error_Exception('RelayState was lost during request.');
    }

   
$data = $GLOBALS['session']->getData('attributequeryexample:data', $dataId);
   
$data['attributes'] = $assertion->getAttributes();
   
$GLOBALS['session']->setData('attributequeryexample:data', $dataId, $data, 3600);

   
SimpleSAML_Utilities::redirectTrustedURL(SimpleSAML_Utilities::selfURLNoQuery(),
        array(
'dataId' => $dataId));
}

handleResponse();

$defNameId = $session->getNameId();
if (empty(
$defNameId)) {
   
$defNameId = array();
}
if (!
array_key_exists('Value', $defNameId)) {
   
$defNameId['Value'] = SimpleSAML_Utilities::generateID();
}
if (!
array_key_exists('Format', $defNameId)) {
   
$defNameId['Format'] = SAML2_Const::NAMEID_TRANSIENT;
}
if (!
array_key_exists('NameQualifier', $defNameId) || $defNameId['NameQualifier'] === NULL) {
   
$defNameId['NameQualifier'] = '';
}
if (!
array_key_exists('SPNameQualifier', $defNameId) || $defNameId['SPNameQualifier'] === NULL) {
   
$defNameId['SPNameQualifier'] = '';
}


if (
array_key_exists('dataId', $_REQUEST)) {
   
$dataId = (string)$_REQUEST['dataId'];
   
$data = $session->getData('attributequeryexample:data', $dataId);
    if (
$data == NULL) {
       
$data = array();
    }
} else {
   
$dataId = SimpleSAML_Utilities::generateID();
   
$data = array();
}

if (
array_key_exists('nameIdFormat', $_REQUEST)) {
   
$data['nameIdFormat'] = (string)$_REQUEST['nameIdFormat'];
} elseif (!
array_key_exists('nameIdFormat', $data)) {
   
$data['nameIdFormat'] = $defNameId['Format'];
}

if (
array_key_exists('nameIdValue', $_REQUEST)) {
   
$data['nameIdValue'] = (string)$_REQUEST['nameIdValue'];
} elseif (!
array_key_exists('nameIdValue', $data)) {
   
$data['nameIdValue'] = $defNameId['Value'];
}

if (
array_key_exists('nameIdQualifier', $_REQUEST)) {
   
$data['nameIdQualifier'] = (string)$_REQUEST['nameIdQualifier'];
} elseif (!
array_key_exists('nameIdQualifier', $data)) {
   
$data['nameIdQualifier'] = $defNameId['NameQualifier'];
}

if (
array_key_exists('nameIdSPQualifier', $_REQUEST)) {
   
$data['nameIdSPQualifier'] = (string)$_REQUEST['nameIdSPQualifier'];
} elseif (!
array_key_exists('nameIdSPQualifier', $data)) {
   
$data['nameIdSPQualifier'] = $defNameId['SPNameQualifier'];
}


if (
array_key_exists('url', $_REQUEST)) {
   
$data['url'] = (string)$_REQUEST['url'];
} elseif (!
array_key_exists('url', $data)) {
   
$data['url'] = SimpleSAML_Module::getModuleURL('exampleattributeserver/attributeserver.php');
}

if (!
array_key_exists('attributes', $data)) {
   
$data['attributes'] = NULL;
}

$session->setData('attributequeryexample:data', $dataId, $data, 3600);

if (
array_key_exists('send', $_REQUEST)) {

   
$nameId = array(
       
'Format' => $data['nameIdFormat'],
       
'Value' => $data['nameIdValue'],
       
'NameQualifier' => $data['nameIdQualifier'],
       
'SPNameQualifier' => $data['nameIdSPQualifier'],
    );
    if (empty(
$nameId['NameQualifier'])) {
       
$nameId['NameQualifier'] = NULL;
    }
    if (empty(
$nameId['SPNameQualifier'])) {
       
$nameId['SPNameQualifier'] = NULL;
    }

   
sendQuery($dataId, $data['url'], $nameId);
}

$t = new SimpleSAML_XHTML_Template(SimpleSAML_Configuration::getInstance(), 'attributequery.php');
$t->data['dataId'] = $dataId;
$t->data['url'] = $data['url'];
$t->data['nameIdFormat'] = $data['nameIdFormat'];
$t->data['nameIdValue'] = $data['nameIdValue'];
$t->data['nameIdQualifier'] = $data['nameIdQualifier'];
$t->data['nameIdSPQualifier'] = $data['nameIdSPQualifier'];
$t->data['attributes'] = $data['attributes'];

$t->show();