存储命令的访问和刷新令牌



我计划为受OAuth 2(JWT(保护的Web API开发一个命令行客户端。访问令牌和刷新令牌的生存时间分别为 5 分钟和 30 分钟。由于用户在坐姿(例如测试或调试会话(中使用命令行客户端的时间将超过五分钟,因此刷新令牌需要存储在本地计算机上,以便在会话开始时只需要一次身份验证,而不是稍后。

我想知道在哪里可以安全地存储刷新令牌。用户主目录中的文本文件可能听起来不太糟糕,因为这也是用户存储其所有私人文档的地方。但是,同一用户运行的任何其他应用程序都可以读取该令牌并滥用它。

此类问题的常见解决方案是什么?

在这里,可以使用资源所有者密码凭据授予,在其中,你将使用命令提示符获取最终用户凭据并将其交换为令牌。有了这个,您可以想到一种方法来根据您在请求令牌时获得的最终用户凭据来加密收到的令牌。因此,每当需要使用刷新令牌时,都可以提示最终用户输入其密码,这样您就不会存储密码,还可以加密令牌,这样其他进程就不会按原样窃取它们。

按照 Kavindu 的说法使用 ROPG - 如果您有支持刷新令牌的实现

之后,您可以将令牌存储在内存中或通过操作系统安全存储。选择有点主观,取决于所访问数据的敏感性

如果使用 OS 安全存储,则按应用 + 用户存储令牌,以确保隔离

执行此操作的示例跨平台组件是keytar,我过去曾将其用于桌面应用程序 - 它是基于nodejs 的 - 不确定这是否适合您: https://github.com/atom/node-keytar/blob/master/README.md

使用它的示例代码

请参阅本文的操作系统安全存储部分,了解如何通过内置操作系统工具查看+管理条目: https://authguidance.com/2018/01/26/final-desktop-sample-overview/

最新更新