Я использую Firebase PHP JWT в качестве основы для генерации токенов ресурсов, чтобы мы могли развернуть продукт на нескольких платформах.Для лучшей практики и удобства обслуживания я решил использовать OAuth для достижения этой цели из-за доступности.
В настоящее время устройство будет перенаправлено на сервер (через браузер) для входа в систему, которая запрашивает базовое имя пользователя, пароль иCAPTCHA.Я не хотел, чтобы устройство запрашивало имя пользователя и пароль и отправляло данные в сценарий из соображений безопасности.
Устройство также отправляет scope в адресную строку какПОЛУЧИТЕ запрос на тип данных, в которых нуждается устройство.
https://www.example.com/oauth/login
&scope=user.profile,user.messages
При успешном входе пользователя в систему с помощью JQuery magic другая страница загружается внутри этой страницы, запрашивая у них разрешение или запрет областей.
В случае успеха мой JSON Web Token создается следующим образом:
$secret = 'Some derived code unique to that user that authenticated';
$b64 = array('uuid' => 'The users ID', 'scopes' => array('Contains the scopes the user allowed'));
// Some code to store this key into the database cross-referenced to the uuid
http_response_code(200);
die(json_encode(\Firebase\JWT\JWT::encode($b64, $secret))); // or do I send as a header called Bearer?
Затем устройство отправляет этот токен конечной точке сервера ресурсов, которая затем декодирует его, предоставляя мне подтвержденный UUID пользователя и областей действия.отправить обратно.
Однако, это не кажется безопасным.Если кто-то захочет, обязательно измените тело JWT (b64) и исправьте запрошенные области.В настоящее время я нашел решение:
Храните области в базе данных вместе с токеном и uuid.
Однако проблема, с которой я сталкиваюсьс чем мне тогда нужно вставить токен на предъявителя?Какие данные нужно отправить для создания токена?
Я посмотрел на этот вопрос , но в нем не указано, какие данные должны быть зашифрованы в токене-носителе для использования сервером ресурсов..