/** * Constructor for this authentication source. * * @param array $info Information about this authentication source. * @param array $config Configuration. */ public function __construct($info, $config) { assert('is_array($info)'); assert('is_array($config)'); // Call the parent constructor first, as required by the interface parent::__construct($info, $config); // Parse configuration. $config = SimpleSAML_Configuration::loadFromArray($config, 'Authentication source ' . var_export($this->authId, true)); $this->servers = $config->getArray('servers', array()); /* For backwards compatibility. */ if (empty($this->servers)) { $this->hostname = $config->getString('hostname'); $this->port = $config->getIntegerRange('port', 1, 65535, 1812); $this->secret = $config->getString('secret'); $this->servers[] = array('hostname' => $this->hostname, 'port' => $this->port, 'secret' => $this->secret); } $this->timeout = $config->getInteger('timeout', 5); $this->retries = $config->getInteger('retries', 3); $this->realm = $config->getString('realm', null); $this->usernameAttribute = $config->getString('username_attribute', null); $this->nasIdentifier = $config->getString('nas_identifier', \SimpleSAML\Utils\HTTP::getSelfHost()); $this->vendor = $config->getInteger('attribute_vendor', null); if ($this->vendor !== null) { $this->vendorType = $config->getInteger('attribute_vendor_type'); } }
/** * Test SimpleSAML\Utils\HTTP::getSelfHost() with and without custom port. */ public function testGetSelfHost() { \SimpleSAML_Configuration::loadFromArray(array('baseurlpath' => ''), '[ARRAY]', 'simplesaml'); $_SERVER['SERVER_PORT'] = '80'; $this->assertEquals('localhost', HTTP::getSelfHost()); $_SERVER['SERVER_PORT'] = '3030'; $this->assertEquals('localhost', HTTP::getSelfHost()); }
/** * This function locates the current entity id based on the hostname/path combination the user accessed. * It will throw an exception if it is unable to locate the entity id. * * @param string $set The set we look for the entity id in. * @param string $type Do you want to return the metaindex or the entityID. [entityid|metaindex] * * @return string The entity id which is associated with the current hostname/path combination. * @throws Exception If no default metadata can be found in the set for the current host. */ public function getMetaDataCurrentEntityID($set, $type = 'entityid') { assert('is_string($set)'); // first we look for the hostname/path combination $currenthostwithpath = \SimpleSAML\Utils\HTTP::getSelfHostWithPath(); // sp.example.org/university foreach ($this->sources as $source) { $index = $source->getEntityIdFromHostPath($currenthostwithpath, $set, $type); if ($index !== null) { return $index; } } // then we look for the hostname $currenthost = \SimpleSAML\Utils\HTTP::getSelfHost(); // sp.example.org if (strpos($currenthost, ":") !== false) { $currenthostdecomposed = explode(":", $currenthost); $currenthost = $currenthostdecomposed[0]; } foreach ($this->sources as $source) { $index = $source->getEntityIdFromHostPath($currenthost, $set, $type); if ($index !== null) { return $index; } } // then we look for the DEFAULT entry foreach ($this->sources as $source) { $entityId = $source->getEntityIdFromHostPath('__DEFAULT__', $set, $type); if ($entityId !== null) { return $entityId; } } // we were unable to find the hostname/path in any metadata source throw new Exception('Could not find any default metadata entities in set [' . $set . '] for host [' . $currenthost . ' : ' . $currenthostwithpath . ']'); }
/** * @deprecated This method will be removed in SSP 2.0. Please use SimpleSAML\Utils\HTTP::getSelfHost() instead. */ public static function getSelfHost() { return \SimpleSAML\Utils\HTTP::getSelfHost(); }
<?php require_once '../_include.php'; /* Load simpleSAMLphp, configuration */ $config = SimpleSAML_Configuration::getInstance(); $session = SimpleSAML_Session::getSessionFromRequest(); /* Check if valid local session exists.. */ SimpleSAML\Utils\Auth::requireAdmin(); $attributes = array(); $attributes['HTTP_HOST'] = array($_SERVER['HTTP_HOST']); $attributes['HTTPS'] = isset($_SERVER['HTTPS']) ? array($_SERVER['HTTPS']) : array(); $attributes['SERVER_PROTOCOL'] = array($_SERVER['SERVER_PROTOCOL']); $attributes['SERVER_PORT'] = array($_SERVER['SERVER_PORT']); $attributes['Utilities_getBaseURL()'] = array(\SimpleSAML\Utils\HTTP::getBaseURL()); $attributes['Utilities_getSelfHost()'] = array(\SimpleSAML\Utils\HTTP::getSelfHost()); $attributes['Utilities_selfURLhost()'] = array(\SimpleSAML\Utils\HTTP::getSelfURLHost()); $attributes['Utilities_selfURLNoQuery()'] = array(\SimpleSAML\Utils\HTTP::getSelfURLNoQuery()); $attributes['Utilities_getSelfHostWithPath()'] = array(\SimpleSAML\Utils\HTTP::getSelfHostWithPath()); $attributes['Utilities_getFirstPathElement()'] = array(\SimpleSAML\Utils\HTTP::getFirstPathElement()); $attributes['Utilities_selfURL()'] = array(\SimpleSAML\Utils\HTTP::getSelfURL()); $template = new SimpleSAML_XHTML_Template($config, 'hostnames.php'); $template->data['remaining'] = $session->getAuthData('admin', 'Expire') - time(); $template->data['attributes'] = $attributes; $template->data['valid'] = 'na'; $template->data['logout'] = null; $template->show();
private function generateDynamicHostedEntityID($set) { assert('is_string($set)'); // get the configuration $baseurl = \SimpleSAML\Utils\HTTP::getBaseURL(); if ($set === 'saml20-idp-hosted') { return $baseurl . 'saml2/idp/metadata.php'; } elseif ($set === 'saml20-sp-hosted') { return $baseurl . 'saml2/sp/metadata.php'; } elseif ($set === 'shib13-idp-hosted') { return $baseurl . 'shib13/idp/metadata.php'; } elseif ($set === 'shib13-sp-hosted') { return $baseurl . 'shib13/sp/metadata.php'; } elseif ($set === 'wsfed-sp-hosted') { return 'urn:federation:' . \SimpleSAML\Utils\HTTP::getSelfHost(); } elseif ($set === 'adfs-idp-hosted') { return 'urn:federation:' . \SimpleSAML\Utils\HTTP::getSelfHost() . ':idp'; } else { throw new Exception('Can not generate dynamic EntityID for metadata of this type: [' . $set . ']'); } }
private function lookupIndexFromEntityId($entityId, $set) { assert('is_string($entityId)'); assert('isset($set)'); $metadataSet = $this->getMetadataSet($set); // check for hostname $currenthost = \SimpleSAML\Utils\HTTP::getSelfHost(); // sp.example.org if (strpos($currenthost, ":") !== false) { $currenthostdecomposed = explode(":", $currenthost); $currenthost = $currenthostdecomposed[0]; } foreach ($metadataSet as $index => $entry) { if ($index === $entityId) { return $index; } if ($entry['entityid'] === $entityId) { if ($entry['host'] === '__DEFAULT__' || $entry['host'] === $currenthost) { return $index; } } } return null; }