Использование JWT Auth вместе с существующей системой аутентификации

Итак, я впервые пытаюсь реализовать аутентификацию в своем API. У меня уже была система аутентификации - Cartalyst Sentinel 2.0, и теперь для добавления аутентификации я использую JWT. Что я сделал, это:

  • Отправьте токен клиентской стороне во время входа в систему.

  • Заменено существующее промежуточное ПО для проверки подлинности на новое промежуточное ПО, которое выполняет как аутентификацию, так и авторизацию.

Оригинальное промежуточное ПО:

$authenticateForLogin = function ($app, $user) {
    return function () use ($app, $user) {          
      if ( Sentinel::check() === false ) {              
          $app->response()->status(401);
                    $app->stop();
      }
    };
};

Новое промежуточное ПО:

$checkForAuthorization = function ($app, $user) {
    return function () use ($app, $user) {      
      if ( Sentinel::check() === false ) {          
          $app->response()->status(401);
          $app->stop();
      } else {

        $authHeader = apache_request_headers()["Authorization"];
        if ($authHeader) {
          $jwt = str_replace("Authorization: Bearer ", "", $authHeader);
          if ($jwt) {
              try {
                  $secretKey = base64_decode(getDbConfig()["AUTH_SECRET"]);                      
                  $token = JWT::decode($jwt, $secretKey, array('HS512'));                  
                  header('Content-type: application/json');
                  echo json_encode([
                      'message'    => "Auth Test Successful"
                  ]);    
              } catch (Exception $e) {
                 //some action
              }
          } else {
             //some action
          }
        } else {
          //some action
        }
      }      
    };
};

Так что мои вопросы -

  • Это правильный подход? У меня сложилось впечатление, что аутентификация и авторизация - это два отдельных процесса. Есть ли какие-либо недостатки безопасности в этом?

  • Аутентификация Sentinel - это куки, система, основанная на сеансах. Так хорошо ли использовать что-то вроде JWT? Или я должен сделать аутентификацию также с использованием JWT (пока не знаю как)?

У меня много сомнений относительно Auth/JWT. Но это на первом месте.

0 ответов

Другие вопросы по тегам