Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
comet:authentication [2018/06/20 15:50] 127.0.0.1 внешнее изменение |
comet:authentication [2018/07/19 17:33] levhav [Авторизация на основе JWT токенов] |
||
---|---|---|---|
Строка 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']); | ||
+ | |||
+ | // 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 токена досрочно можно его отозвать поместив его в список отозванных токенов запросом |