1

https://github.com/philsturgeon/codeigniter-restserver/瞭解摘要式身份驗證 - CodeIgniter的REST服務器

我創建使用上述其餘服務器的API,並需要現在登錄保護它。我知道有在其他服務器兩種方法1)基本,2)消化

我也使用其他客戶端來測試這個API

$this->load->library('rest', array( 
     'server' => 'http://mynew/api/', 
     'http_user' => 'admin', 
     'http_pass' => '1234', 
     'http_auth' => 'basic', // or 'digest' 
     //'http_auth' => 'digest' 
    )); 

    $user = $this->rest->get('listrecord', array('key' => 'mykey'), 'json'); 

$config['rest_valid_logins'] = array('admin' => '1234');

在上面的代碼中「基本」身份驗證正常工作,但當我改變它來消化它說「沒有授權」。請注意,當我在這裏進行更改時,我也將配置更改爲摘要。

我的理解是基本不是很安全?所以這就是爲什麼我認爲消化比它好。任何想法如何獲得消化工作?謝謝你的幫助。我想,它可能不是代碼特定的問題。

回答

1

您可能會爲自己節省一些麻煩並使用基於SSL的基本身份驗證。如果你不使用SSL,那麼我認爲Digest會是一條好路。再說一遍,如果你不使用SSL,那麼你並不安全。

我會使用curl弄清楚你的問題是否是客戶端或服務器

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://mynew/api/"); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); 
curl_setopt($ch, CURLOPT_USERPWD, "admin:1234"); 

// need to get WWW-Authenticate header from the server (for realm and nonce) with a HEAD request 
curl_setopt($ch, CURLOPT_NOBODY, 1); 
curl_exec($ch);   

// the get the real output 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPGET, 1); 
$output = curl_exec($ch); 
echo $output; 
上測試您的REST服務器