https://github.com/philsturgeon/codeigniter-restserver/
我使用上面的rest服务器创建了一个api,现在需要登录保护它。我知道休息服务器有两种方法1)基本,2)摘要
我也在使用rest client来测试这个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');
在上面的代码中,“basic”auth工作正常,但是当我将其更改为摘要时,它会显示“Not authorizedized”。请注意,当我在此处进行更改时,我也将配置更改为消化。
我的理解是基本不是很安全?这就是为什么我认为摘要比它更好。任何想法我如何得到消化工作?谢谢你的帮助。我想这可能不是特定于codeigniter的问题。
答案 0 :(得分:1)
您可以省去一些麻烦并使用基于SSL的身份验证。如果您没有使用SSL,那么我认为Digest将是最佳选择。再说一次,如果你没有使用SSL,那你就不太安全了。
我会使用CURL测试您的REST服务器,以确定您的问题是在客户端还是服务器上
$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;