gpt4 book ai didi

node.js - 在计算机上本地存储 JWT token 的位置?

转载 作者:太空宇宙 更新时间:2023-11-03 23:58:05 28 4
gpt4 key购买 nike

我正在使用 Node 构建自定义命令行工具。用户需要能够登录并保留其 session 。我之前已经使用 Node 和通行证为使用 localStorage 的 Web 应用程序完成了此操作,但是我应该如何使用 cli 工具存储用户 JWT。

最佳答案

  • 如果它是 OAuth2 或 OIDC access_token,那么即使它是 JWT,您也应该将其视为不透明 blob,因为 OAuth2 和 OIDC 客户端不是 access_token 的目标受众(它们旨在将其按原样传递到远程 protected 资源)。
    • 我注意到 OAuth2 和 ODIC 允许 access_token任何东西 - 包括非 JWT token ,例如简短的不透明“引用 token ”值。
    • 这意味着您可以将 JWT(采用 Base64 编码格式)直接写入磁盘上的文件,并根据需要将其读回。因为它是 Base64,所以您无需过多担心文件编码(例如 7 位 ASCII 和 UTF-8 都可以)。
  • 如果它是 ODIC id_token,那么如果您打算使用客户端中存储的每个单独的声明,您可以对其进行 Base64 解码并将解码后的原始 JSON 存储在文件中。请注意,如果您确实将原始 JSON 存储到文件中,则必须使用 UTF-8,除非您希望后续遇到困难。

每个平台都有每个用户临时数据的首选位置:

  • 在 Windows 上,您应将其存储在 %LOCALAPPDATA% 的子目录中 (C:\Users\me\AppData\Local),例如%LOCALAPPDATA%\YourCompany\YourProduct\Jwt.json
    • 如果安全性很重要,您应该使用 DPAPI 静态加密该文件:DPAPI 使用属于用户配置文件一部分的 key 加密文件 - 您只需将明文传递到 Win32 函数,它就会返回加密的密文,然后将其写入磁盘。当然,请确保您小心阅读和编写的任何文本的二进制编码。 DPAPI 可以按用户(在计算机之间漫游)或按计算机(多个用户,但仅在同一台计算机上)基础上使用。
  • Windows 也有凭证管理器 API,但它不太适合存储大型 blob:https://learn.microsoft.com/en-us/windows/desktop/secauthn/kinds-of-credentials
  • 在 macOS 上,您需要使用钥匙串(keychain) API:https://developer.apple.com/documentation/security/keychain_services
  • 在 Linux 上,没有系统提供的 secret 存储机制 ( https://dzone.com/articles/storing-secrets-in-linux ),但大多数方法似乎都是将 secret 写入磁盘,然后在文件上设置 chmod 以防止其他用户访问。您还可以使用用户在程序运行时必须输入的自定义密码来加密文件。
    • 与 Windows 一样,您仍应将此数据保存在用户的主目录 (~/) 下,而不是共享的 /tmp 目录下。 Linux 上应用程序特定数据的惯例是使用隐藏的(点前缀)主子目录,例如~/.yourCompany/yourProduct 或只是 ~/.yourProduct

关于node.js - 在计算机上本地存储 JWT token 的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56068787/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com