| 
<?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();
 
 |