Как правильно использовать маркеры-носители?

Я создаю систему авторизации в PHP , и я наткнулся на эту схему передачи меток JWT, я читал RFC 6750 . У меня есть следующие сомнения:

  1. Как это улучшает безопасность?
  2. Сервер отвечает клиенту маркером JWT в своем теле после успешной авторизации и входа в систему, а теперь, когда клиент делает другой запрос, я не понимаю, как это сделать на самом деле, я хочу отправить токен из клиента в заголовок Авторизация в запрос, поэтому теперь я должен просто прикрепить «Bearer» к токену, который я получил в предыдущем ответе с сервера, и если «yes», то сервер при получении заголовка авторизации должен просто разделить строку на пробел и взять второе значение из полученный массив, а затем декодировать его? Например, Authorization: Bearer fdbghfbfgbjhg_something , как сервер должен справиться с этим, decodeFunc(explode(" ", $this->getRequest()->getHeader("Authorization"))[1]) ?

1.Улучшение безопасности, потому что если токен не отправляется в заголовке, отправленном в URL-адресе, он будет регистрироваться в сети, в журнале сервера ….

2. Хорошая функция для получения жетонов-носителей

 /** * Get hearder Authorization * */ function getAuthorizationHeader(){ $headers = null; if (isset($_SERVER['Authorization'])) { $headers = trim($_SERVER["Authorization"]); } else if (isset($_SERVER['HTTP_AUTHORIZATION'])) { //Nginx or fast CGI $headers = trim($_SERVER["HTTP_AUTHORIZATION"]); } elseif (function_exists('apache_request_headers')) { $requestHeaders = apache_request_headers(); // Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don't care about capitalization for Authorization) $requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders)); //print_r($requestHeaders); if (isset($requestHeaders['Authorization'])) { $headers = trim($requestHeaders['Authorization']); } } return $headers; } /** * get access token from header * */ function getBearerToken() { $headers = $this->getAuthorizationHeader(); // HEADER: Get the access token from the header if (!empty($headers)) { if (preg_match('/Bearer\s(\S+)/', $headers, $matches)) { return $matches[1]; } } return null; } 

Я бы рекомендовал использовать следующий RegEx для проверки, если это действительный jwt-токен:

 /Bearer\s((.*)\.(.*)\.(.*))/ 

и получить доступ к нему также со спичками [1].

Это структура JWT-токена, см. https://jwt.io/