Я делаю приложение для телефона, используя Sinch.
Я успешно предоставляю обратный вызов для событий ICE и ACE без запроса входа.
Но теперь, когда я пытаюсь подписать запрос, чтобы сделать его более безопасным, он всегда не соответствует требованию
Я получил свой код отсюда: Проблема с запросом авторизации
Это работает, когда я пытаюсь использовать данные и ключ приложения от https://www.sinch.com/using-rest/#callbackrequestsigning
Но когда я пытаюсь использовать реальные данные, они всегда терпят неудачу.
$key = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxx";
$secret = 'my-app-secret';
$body = $request->getContent();
$timestamp = $request->input('timestamp');
$path = '/sinch/callback/' . $callbackType;
$content_type = "application/json";
$canonicalized_headers = "x-timestamp:" . $timestamp;
$content_md5 = base64_encode( md5( utf8_encode($body), true ));
$string_to_sign =
"POST\n".
$content_md5."\n".
$content_type."\n".
$canonicalized_headers."\n".
$path;
$signature = base64_encode(hash_hmac("sha256", utf8_encode($string_to_sign), base64_decode($secret), true));
$authorizationHeader = $request->header('Authorization');
$sinchAuthorizationHeader = str_replace('Application ', '', $authorizationHeader);
$sinchAuthorizationHeader = explode(':', $sinchAuthorizationHeader);
if($sinchAuthorizationHeader[0] == $key && $signature == $sinchAuthorizationHeader[1]) {
return true;
}
return false;
Любая помощь будет оценена.
Задача ещё не решена.
Других решений пока нет …