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);
 }
Example #5
0
 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]);
 }