保存身份验证令牌的最佳方式

本文关键字:最佳 方式 令牌 身份验证 保存 | 更新日期: 2023-09-27 18:23:51

我一直致力于在c#中实现一个api。实施进展顺利,但我确实遇到了一个问题。

当我的库针对api进行授权时,我有一个auth_token,用于对Web服务进行后续查询。

令牌需要在程序运行之间保留,因为它对用户保持不变(尽管我会在应用程序启动时检查它是否仍然有效)。

出于测试目的,我基本上只是将令牌保存到一个文本文件中,该文件保存在应用程序的根目录中。

这很好,但这是最好的方法吗?

不确定用户是否会欣赏它被保存在明文文件中(即使它在他自己的电脑上)。

那么,像这样保存代币的一般做法是什么呢?

保存身份验证令牌的最佳方式

我会使用Windows数据保护关于如何从C#使用它,有很多例子。它使用特定于用户的密钥来加密数据。只有用户自己才能解密。此外,请确保在服务器和客户端之间传输数据时确保数据的安全。

在项目属性中为您的项目创建一个设置文件,将AuthToken属性添加到已知设置中(可能是在用户级别),然后使用:

Properties.Settings.Default.AuthToken = userAuthToken;

如果您认为他们希望隐藏userAuthToken,请对其进行加密或编码,使其不那么明显。

您可以验证api是否在asp.net或windows环境下使用(检查Request是否为null就足够了),在第一种情况下使用cookie,在第二种情况下将其保存在注册表项上。

这可能在本地应用程序中工作或在本地运行CI,但如果您在DevOps(Azure)中,您的测试应用程序将位于VM bin文件夹中。每次部署后,你的bin文件夹都会被删除,所以你保存在bin文件中的令牌就不见了。也许保存它的最好方法是在发布管道中的DevOps环境变量中加密,这样你就不会丢失它。当在本地运行时,你可以将它保存在任何地方。