Laravel 应用与第 3 方交互 API 以获取令牌

Laravel app interacting with a 3rd party API to get a token

我有一个带有 GUI 的 Laravel 应用程序,用户可以根据 MySQL 数据库中的数据登录。

当用户登录时,服务器需要向第 3 方的特定端点发出请求 API 以获得令牌。此令牌来自该请求的响应,并且由于它是某种 session 令牌,它会不时更新(这意味着如果抛出特定错误,则应调用检索令牌的同一请求).

在某些特定的视图/路由中,控制器中的关联逻辑意味着向第三方 API 的一个或多个端点发出请求,并在 body 或 headers - 取决于端点。

我最关心的是是否有人可以访问该特定令牌。如果发生这种情况,那么他们可能会与第 3 方 API 互动并造成不必要的混乱。因此,如果页面或操作需要更长的时间,我可以接受,只要实施的过程非常安全(发生前一种情况的风险极低)。

我的目标程序是什么?所需的答案将利用 Laravel“机器”并参考应将此令牌存储在何处以及如何存储。

在Web开发中,这种情况通常使用CSRF令牌来处理,以确保正确用户发送请求

根据你的问题我假设:

  • 你的前端向第三方发送请求Api.

  • 如果您的第三方库支持 CSRF 保护

我的建议是使用代理设计模式

  1. 前端调用我们后端的路由。
  2. 你的后端路由(扮演代理角色)请求第三方库session("third_party_session_token")
  3. 仅第三方响应您的后端。
  4. 后端return响应前端。

所以这样一来,第三库的Token只会留在后台

第三方 Api-令牌存储在 用户会话 space .

可以使用laravel加密,如果担心session数据泄露:

session->put("third_party_api_token",Crypt::encryptString($api_token));

并在您想要第三方时检索它:

$api_token = Crypt::decryptString(session()->get("third_party_api_token"));

在加密任何内容之前,您必须使用以下方法生成密钥:

php artisan key:generate