Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
comet:authentication [2018/06/20 15:50] 127.0.0.1 внешнее изменение |
comet:authentication [2019/12/18 01:58] (текущий) |
||
|---|---|---|---|
| Строка 55: | Строка 55: | ||
| dev_id + dev_key = lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB815 | dev_id + dev_key = lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB815 | ||
| </code> | </code> | ||
| + | |||
| + | Вот код на php для генерации токена | ||
| + | <file php> | ||
| + | <?php | ||
| + | |||
| + | function getJWT($data, $pass, $dev_id = 0) | ||
| + | { | ||
| + | // Create token header as a JSON string | ||
| + | $header = json_encode(['typ' => 'JWT', 'alg' => 'HS256']); | ||
| + | |||
| + | if(isset($data['user_id'])) | ||
| + | { | ||
| + | $data['user_id'] = (int)$data['user_id']; | ||
| + | } | ||
| + | | ||
| + | // Create token payload as a JSON string | ||
| + | $payload = json_encode($data); | ||
| + | |||
| + | // Encode Header to Base64Url String | ||
| + | $base64UrlHeader = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($header)); | ||
| + | |||
| + | // Encode Payload to Base64Url String | ||
| + | $base64UrlPayload = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($payload)); | ||
| + | |||
| + | // Create Signature Hash | ||
| + | $signature = hash_hmac('sha256', $base64UrlHeader . "." . $base64UrlPayload, $pass.$dev_id, true); | ||
| + | |||
| + | // Encode Signature to Base64Url String | ||
| + | $base64UrlSignature = str_replace(['+', '/', '='], ['-', '_', ''], base64_encode($signature)); | ||
| + | |||
| + | // Create JWT | ||
| + | return trim($base64UrlHeader . "." . $base64UrlPayload . "." . $base64UrlSignature); | ||
| + | } | ||
| + | |||
| + | echo getJWT(['user_id' => 2, "exp" => 1683228800], 'lPXBFPqNg3f661JcegBY0N0dPXqUBdHXqj2cHf04PZgLHxT6z55e20ozojvMRvB8', '15'); | ||
| + | </file> | ||
| Так как токен выдаётся на какое то время то для того чтоб прервать действие JWT токена досрочно можно его отозвать поместив его в список отозванных токенов запросом | Так как токен выдаётся на какое то время то для того чтоб прервать действие JWT токена досрочно можно его отозвать поместив его в список отозванных токенов запросом | ||