codeigniter-restserver: digest auth всегда возвращает & quot; неверные учетные данные & quot;

Я пытаюсь интегрировать код codeigniter-restserver в мой существующий проект CI3. Я не могу понять, как получить рабочие учетные данные после проверки подлинности.

Вот код, на котором он застревает (REST_Controller.php):

    if (strcasecmp($digest['response'], $valid_response) !== 0)
{
// Display an error response
$this->response([
$this->config->item('rest_status_field_name') => "false",
$this->config->item('rest_message_field_name') => $this->lang->line('text_rest_invalid_credentials')
], self::HTTP_UNAUTHORIZED);
}

rest.php // config

$config['rest_auth'] = 'digest';
$config['auth_source'] = 'library';
$config['auth_library_class'] = 'auth_model';
$config['auth_library_function'] = 'validate_user';

Класс, упомянутый выше (аутентификация из базы данных):

function validate_user($username='',$password=null)
{
if($username!=''&&$password!=null)
{
$this->db->select('md5');
$this->db->where('username', $username);
$query = $this->db->get('user');
$result = $query->result_array();
return $result[0]['md5']; // stored as md5(username:realm:password);
}
return false;
}

ответ json:

{"status":"false","error":"Invalid credentials"}

Используя почтальон и вот как у меня есть эта настройка для заголовка:

Digest username="user", realm="REST API", nonce="", uri="/restapi/dashboard", response="928e85782ff2322fd2232ebbac4f058f", opaque=""

1

Решение

Убедитесь, что вы включаете qop=auth в авто

1

Другие решения

@Japheth прав, но вы должны добавить Nonce, Nonce Count и Client Nonce, что будет делать пустое значение.

nonce=" "  // Nonce
nc=" "     // Nonce Count
cnonce=" " // Client Nonce
qop=auth

Заголовок будет выглядеть следующим образом:

Authorization:Digest username="user", realm="REST API", nonce=" ", uri="/restapi/dashboard", qop=auth, nc= , cnonce=" ", response="928e85782ff2322fd2232ebbac4f058f", opaque=""
0