Я читаю и пытаюсь реализовать то, что указано в документации по Защита учетных записей пользователей с помощью Cross-Account Protection
Что я сделал, как показано ниже:
JWT::$leeway = 60;
$key = file_get_contents('location.json');
$time = time();
$payload = [
"iss" => "account email",
"sub" => "account email",
"aud" => "https://risc.googleapis.com/google.identity.risc.v1beta.RiscManagementService",
"iat" => $time,
"exp" => $time + 3600,
];
/**
* IMPORTANT:
* You must specify supported algorithms for your application. See
* https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40
* for a list of spec-compliant algorithms.
*/
$jwt = JWT::encode($payload, $key);
$decoded = JWT::decode($jwt, $key, ['HS256']);
print_r($jwt);
print_r($decoded);
$client = new Client();
try {
$request = $client->post('https://risc.googleapis.com/v1beta/stream:update', [
'headers' => [
'Authorization' => 'Bearer ' . $jwt,
'Accept' => 'application/json',
],
'form_params' => [
'delivery' => [
'delivery_method' => 'https://schemas.openid.net/secevent/risc/delivery-method/push',
'url' => 'https://test.myapp.com/webhooks/google',
],
'events_requested' => [
'https://schemas.openid.net/secevent/oauth/event-type/tokens-revoked',
],
],
]);
$response = $request->getBody();
dd($response);
} catch (ClientException $exception) {
dd($exception->getResponse()->getBody()->getContents());
}
Проблемы, с которыми я сталкиваюсь:
- Я плохо понимаю, как использовать JWT из того, что я прочитал в документации, что я делаю неправильно в своей реализации?
- Примеры приведены в JAVA, но мне нужно это в php, и я попытался прочитать код JAVA, но не понимаю, откуда происходят некоторые вещи.
- Из-за того, что я прочитал, я полагаю, я не смогу проверить эти события в локальной среде? То есть точки этих событий должны быть запущены на местном? Или такие сервисы, как ultrahook, позволят это сделать? В противном случае мне пришлось бы тестировать конечную точку прямо на сервере.
Ошибка, которую я получаю из приведенного выше кода: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.
Попытка предложенной ниже кодировки RS256
дает мне ошибка UnexpectedValueException: Algorithm not allowed
Мне кажется, мне не хватает необходимых знаний о JWT и что-то не так.