Exemple #1
0
 /**
  * Authenticate a user.
  * @param Zend_Controller_Request_Abstract $request The current request
  * @param Zend_Controller_Response_Abstract $response The current response
  * @return Array|Boolean User data, or FALSE
  */
 public function authenticate(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response)
 {
     if ($request->getPost('openid_identifier') || $request->getParam('openid_mode')) {
         $sreg = $this->getSreg();
         $openIdAdapter = new Zend_Auth_Adapter_OpenId($request->getPost('openid_identifier'), null, null, null, $sreg);
         $result = $openIdAdapter->authenticate();
         if ($result->isValid()) {
             return $this->_getUserData($result->getIdentity(), $sreg->getProperties());
         } else {
             $errors = $result->getMessages();
             array_walk($errors, array($this, '_addError'));
         }
     }
     $this->_addError('Insufficient data received');
     return false;
 }
 /**
  * Authenticates the given OpenId identity.
  * Defined by Zend_Auth_Adapter_Interface.
  *
  * @throws Zend_Auth_Adapter_Exception If answering the authentication
  *                                     query is impossible
  * @return Zend_Auth_Result
  */
 public function authenticate()
 {
     $result = parent::authenticate();
     if ($result->isValid() && ($username = $this->extractUsername($result->getIdentity()))) {
         return new Zend_Auth_Result($result->getCode(), $username, $result->getMessages());
     }
     return $result;
 }
    function testSetCheckImmediate() {
        $expiresIn = time() + 600;
        $storage = new Zend_OpenId_Consumer_Storage_File();
        $storage->delDiscoveryInfo(self::ID);
        $storage->addDiscoveryInfo(self::ID, self::REAL_ID, self::SERVER, 1.1, $expiresIn);
        $storage->delAssociation(self::SERVER);
        $storage->addAssociation(self::SERVER, self::HANDLE, self::MAC_FUNC, self::SECRET, $expiresIn);

        $response = new Zend_OpenId_ResponseHelper(true);
        
        $_SERVER['SCRIPT_URI'] = "http://www.zf-test.com/test.php";

        $adapter = new Zend_Auth_Adapter_OpenId(self::ID);
        $adapter->setCheckImmediate(true);
        $this->assertSame($adapter, $adapter->setResponse($response));
        $ret = $adapter->authenticate();
        $this->assertTrue(is_null($ret));
        $headers = $response->getHeaders();
        $this->assertSame( '', $response->getBody() );
        $this->assertTrue( is_array($headers) );
        $this->assertSame( 1, count($headers) );
        $this->assertTrue( is_array($headers[0]) );
        $this->assertSame( 3, count($headers[0]) );
        $this->assertSame( 'Location', $headers[0]['name'] );
        $this->assertSame( true, $headers[0]['replace'] );
        $url = $headers[0]['value'];
        $url = parse_url($url);
        $this->assertSame( "http", $url['scheme'] );
        $this->assertSame( "www.myopenid.com", $url['host'] );
        $this->assertSame( "/", $url['path'] );
        $q = explode("&", $url['query']);
        $query = array();
        foreach($q as $var) {
            if (list($key, $val) = explode("=", $var, 2)) {
                $query[$key] = $val;
            }
        }
        $this->assertTrue( is_array($query) );
        $this->assertSame( 6, count($query) );
        $this->assertSame( 'checkid_immediate', $query['openid.mode'] );
        $this->assertSame( 'http%3A%2F%2Freal_id.myopenid.com%2F', $query['openid.identity'] );
        $this->assertSame( 'http%3A%2F%2Fid.myopenid.com%2F', $query['openid.claimed_id'] );
        $this->assertSame( self::HANDLE, $query['openid.assoc_handle'] );
        $this->assertSame( 'http%3A%2F%2Fwww.zf-test.com%2Ftest.php', $query['openid.return_to'] );
        $this->assertSame( 'http%3A%2F%2Fwww.zf-test.com', $query['openid.trust_root'] );
    }
 /**
  * Get Zend_Auth_Adapter_OpenId adapter
  *
  * @param string $openid_identifier
  * @return Zend_Auth_Adapter_OpenId
  */
 protected function _getOpenIdAdapter($openid_identifier = null)
 {
     $adapter = new Zend_Auth_Adapter_OpenId($openid_identifier);
     $dir = APPLICATION_PATH . '/../tmp';
     if (!file_exists($dir)) {
         if (!mkdir($dir)) {
             throw new Zend_Exception("Cannot create {$dir} to store tmp auth data.");
         }
     }
     $adapter->setStorage(new Zend_OpenId_Consumer_Storage_File($dir));
     return $adapter;
 }
Exemple #5
0
 protected function authenticate()
 {
     $open_id_adapter = new Zend_Auth_Adapter_OpenId($this->body('openid_identifier'));
     $open_id_adapter->setResponse(new ZfControllerResponseAdapter());
     try {
         $result = $this->zend_auth->authenticate($open_id_adapter);
     } catch (ZfThrowableResponse $response) {
         throw new k_SeeOther($response->getRedirect());
     }
     $this->errors = array();
     if ($result->isValid()) {
         $user = $this->selectUser($this->zend_auth->getIdentity());
         if ($user) {
             $this->session()->set('identity', $user);
             throw new k_SeeOther($this->query('continue'));
         }
         $this->errors[] = "Auth OK, but no such user on this system.";
     }
     $this->session()->set('identity', null);
     $this->zend_auth->clearIdentity();
     foreach ($result->getMessages() as $message) {
         $this->errors[] = htmlspecialchars($message);
     }
 }
Exemple #6
0
 /**
  * Get Zend_Auth_Adapter_OpenId adapter
  *
  * @param string $openid_identifier
  * @return Zend_Auth_Adapter_OpenId
  */
 protected function _getOpenIdAdapter($openid_identifier = null)
 {
     require_once 'Zend/Auth/Adapter/OpenId.php';
     require_once 'Zend/OpenId/Consumer/Storage/File.php';
     $adapter = new Zend_Auth_Adapter_OpenId($openid_identifier);
     if (!file_exists($this->_config->tmpDirectory)) {
         if (!mkdir($this->_config->tmpDirectory)) {
             throw new Zend_Exception("Cannot create {$this->_config->tmpDirectory} to store tmp auth data.");
         }
     }
     $adapter->setStorage(new Zend_OpenId_Consumer_Storage_File($this->_config->tmpDirectory));
     return $adapter;
 }
 function testSetHttpClient()
 {
     $storage = new Zend_OpenId_Consumer_Storage_File(dirname(__FILE__) . "/_files");
     $storage->delDiscoveryInfo(self::ID);
     $storage->delAssociation(self::SERVER);
     $adapter = new Zend_Auth_Adapter_OpenId(self::ID, $storage);
     $http = new Zend_Http_Client(null, array('maxredirects' => 4, 'timeout' => 15, 'useragent' => 'Zend_OpenId'));
     $test = new Zend_Http_Client_Adapter_Test();
     $http->setAdapter($test);
     $adapter->SetHttpClient($http);
     $ret = $adapter->authenticate();
     $this->assertSame("GET / HTTP/1.1\r\n" . "Host: id.myopenid.com\r\n" . "Connection: close\r\n" . "Accept-encoding: gzip, deflate\r\n" . "User-Agent: Zend_OpenId\r\n\r\n", $http->getLastRequest());
 }