Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
comet:authentication [2018/06/20 15:50]
127.0.0.1 внешнее изменение
comet:authentication [2018/08/04 08:38]
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'​]);​
 +
 +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 токена досрочно можно его отозвать поместив его в список отозванных токенов запросом