function discover($url, $fetcher) { try { $info = $this->perform_discovery($url, $fetcher); if ($info != null) { return $info; } } catch (Exception $e) { trigger_error("Error while attempting OpenID discovery: " . $e->getMessage(), E_USER_ERROR); } // Fallback to default discovery mechanism from php-openid return Auth_OpenID_discover($url, $fetcher); }
<head> <title>OpenID discovery</title> </head> <body> <h2>OpenID discovery tool</h2> <p> Enter an OpenID URL to begin discovery: </p> <form> <input type="text" name="openid_identifier" size="40" /> <input type="submit" value="Begin" /> </form> <?php if ($identifier) { $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); list($normalized_identifier, $endpoints) = Auth_OpenID_discover($identifier, $fetcher); ?> <h3>Discovery Results for <?php echo escape($identifier); ?> </h3> <table cellpadding="7" cellspacing="0"> <tbody> <tr> <th>Claimed Identifier</th> <td><?php echo escape($normalized_identifier); ?> </td> </tr>
/** * Check if user supplied URL is a valid OpenID and * get the URL provider from it. * * @param string $identifier user supplied OpenID identifier * @return string */ public function validate($identifier) { $oldIdentifier = get_option('openid_delegation_url'); $fetcher = Auth_Yadis_Yadis::getHTTPFetcher(); $response = Auth_Yadis_Yadis::discover($identifier, $fetcher); list($normalized_identifier, $endpoints) = Auth_OpenID_discover($identifier, $fetcher); if (!empty($identifier) && empty($endpoints)) { add_settings_error('openid_delegation_url', 'error', sprintf(__('No OpenID services discovered for %s.', 'openid-delegation'), $identifier)); return $oldIdentifier; } update_option('openid_delegation_provider', $endpoints[0]->server_url); if (!empty($response->xrds_uri)) { update_option('openid_delegation_xrds_location', $response->xrds_uri); } return $normalized_identifier; }
function test_discoverSSL() { // The consumer code should not attempt to perform discovery // on an HTTPS identity URL in the absence of SSL support. $id_url = 'https://unsupported/'; $f =& new _NonFetcher(); $result = Auth_OpenID_discover($id_url, $f); $this->assertTrue($result == array($id_url, array())); $this->assertFalse($f->used); }
function test_openidNoDelegate() { global $__openid_html_no_delegate; $this->fetcher->documents = array($this->id_url => array('text/html', $__openid_html_no_delegate)); list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url, $this->fetcher); $this->assertEquals($this->id_url, $id_url); $this->assertEquals($services[0]->server_url, "http://www.myopenid.com/server"); $this->assertEquals($services[0]->identity_url, $this->id_url); $this->assertEquals($services[0]->delegate, null, 'Delegate should be null'); $this->_notUsedYadis($services[0]); }