使用API​​密钥策略的Lumen API身份验证

问题描述

我正在使用Lumen开发REST API。 (第8版)。而且我需要为我的REST API实现基于API密钥的身份验证。例如,我将生成一个API密钥,并将其提供给需要使用我的API的第三方。要生成此密钥,我正在使用JWT。然后将密钥保存在数据库中。

<?php
namespace App\Http\Middleware; 

use App\ApiKey;
use Closure;

class ApiAuthMiddleware
{
    public function handle($request,Closure $next)
    {
        $tokenValid = ApiKey::where('api_key',$request->header('Authorization'))->exists();

        if (!$tokenValid) {
            return response()->json('Unauthorized',401);
        } 

        return $next($request);
    }
}

这是我自定义设计的代码,用于检查数据库中的API密钥。我有一些主要的基于安全性的问题。

  1. 其他第三方将在标头中发送此令牌,任何可以读取有效负载的人都可以获取标头,并向我发送具有相同标头的请求。如何预防呢?与客户端密钥有关吗?

  2. 在每个请求中检查MySQL数据库是否可行?这是数据库不必要的工作量吗?我们可以用一个小的Redis实例代替它吗?这样安全吗?

我们可以这样设置令牌:

Redis::set('token','jwt_token_here');

最后,是否有一个无需使用我的自定义代码即可进行管理的库?我认为它更安全,更有效。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)