facebook twitter hatena line email

Php/zend framework/basic認証

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

basic認証をかける

public function basicAction()
{
  $resolver = new Zend_Auth_Adapter_Http_Resolver_File();
  $resolver->setFile(dirname(__FILE__) . '/passwd.txt');
  $adapterConfig = array(
    "accept_schemes" => "basic", // 認証方法
    "realm" => 'hoge', // BASIC認証ダイアログに表示される文字
    "digest_domains" => "/auth", // 認証をかけたいドメイン又はパス
    "nonce_time" => 36, // 生存時間
  );
  /**
  * 認証するためのアダプタはHTTPを利用する
  */
  $adapter = new Zend_Auth_Adapter_Http($adapterConfig);
  $adapter->setBasicResolver($resolver)
    ->setRequest($this->getRequest())
    ->setResponse($this->getResponse());
  $result = $adapter->authenticate();
  if ($result->isValid()) {
    die("ok");
  }
  print "ng";
}
  • passwd.txt
test:hoge:fuga
[ユーザ]:[realm]:[パス]

basic認証突破してhttpアクセスする

require_once 'Zend/Http/Client.php';
require_once 'Zend/Http/Client/Adapter/Exception.php';
// Http_Clientロード
$client = new Zend_Http_Client();
try {
    $client->setUri($url);
    $client->setAuth('test', 'fuga', Zend_Http_Client::AUTH_BASIC);
    $client->setConfig(array(
     'maxredirects' => 5,
     'timeout'      => 30
    ));
    $params = array("id" => "hoge", "pass" => "hoge");
    // 複数のパラメータを一度に追加します(POST
    $client->setParameterPost($params);
    // POST リクエストを実行します
    $response = $client->request(Zend_Http_Client::POST);
    print nl2br(print_r($response,1));
    
} catch (Zend_Http_Client_Adapter_Exception $e) {
    // handle the error
    error_log($e);
}