首页 > 解决方案 > 如何在单页应用程序中保存 GitHub 访问令牌?

问题描述

我创建了一个单页应用程序 (SPA),它依赖于 GitHub API v4。API 需要访问令牌才能访问,因此我创建了一个输入元素来要求用户存储他们的访问令牌。我想保留输入的令牌,以便用户在重新加载或重新访问站点后不会重新输入令牌,而无需构建任何后端服务器

我尝试了几件事来实现我的目的:

  1. 将令牌保存在localStorage

这很容易,但是在存储中存储秘密信息存在安全问题,因此我拒绝了这种方法。

  1. 使用GitHub OAuth App获取令牌

它不适合,因为它需要存储client secret在我的应用程序中。由于我的应用程序是 SPA,因此任何用户都可以读取存储的密钥。

  1. 使用 Auth0 绕过认证

起初,获取 GitHub 访问令牌似乎很容易,但它需要后端代理服务器来获取令牌,如此处所述

没有任何后端服务器就不可能持久化令牌吗?
如果是这样,如何轻松持久化令牌?目前,我想出了以下解决方案:

  1. 使用 AWS Lambda 加密令牌并将其保存到 cookie

当用户输入令牌时,应用程序将令牌发送到 Lambda 函数,该函数对令牌进行加密并将其响应到 cookie 中。当用户返回我的应用程序时,应用程序将 cookie 发送到 Lambda 函数并解密令牌并将其发送回应用程序。

  1. 使用 AWS Lambda 作为代理与 Auth0 通信

如此处所述,Lambda 函数可以通过 Auth0 检索 GitHub 访问令牌。但是,我不想这样做,因为我不想使用两个外部服务来保存令牌。

标签: githuboauthaws-lambdasingle-page-application

解决方案


推荐阅读