最佳的身份验证令牌保存方式是什么?

4
我一直在使用C#实现API。实现进展顺利,但我遇到了一个问题。
当我的库已经通过API进行了授权,我会得到一个auth_token,我将其用于后续对Web服务的查询。
该令牌需要在程序运行之间保留,因为它对于用户来说是不变的(尽管我在应用程序启动时检查它是否仍然有效)。
出于测试目的,我基本上将令牌保存到文本文件中,该文件保存在应用程序的根目录中。
这样做很好,但这是最好的方式吗?
不确定用户是否会欣赏它被保存在明文文件中(即使它在他自己的电脑上)。
那么,像这样保存令牌的一般做法是什么?

加密该值,然后将其保存到用户配置文件中,我还会加密整个配置文件,使其对机器本身唯一。请勿以明文形式存储此类信息,您对是否这样做的疑问是正确的,因为这不是一个“好主意”。 - Security Hound
段落是你的朋友。使用它们。 - Oded
4个回答

0
在项目属性中为您的项目创建一个设置文件,在已知的设置中添加一个AuthToken属性(可能是在用户级别),然后使用:
Properties.Settings.Default.AuthToken = userAuthToken;

如果您认为他们希望它被隐藏,可以加密或编码userAuthToken以使其不那么明显。

0

这在本地应用程序或在本地运行CI中可能有效,但如果你在DevOps(Azure)中,你的测试应用程序将驻留在VM bin文件夹中。每次部署后,您的bin文件夹都会被清除,因此您保存在bin文件中的令牌也会消失。也许最好的保存方式是在发布管道中的DevOps环境变量之一中进行加密,以便您不会失去它。在本地运行时,您可以将其保存在任何位置。


0
我会使用 Windows Data Protection。有很多例子可以教你如何在C#中使用它。它使用用户特定的密钥来加密数据,只有用户本人才能解密。同时,请确保在服务器和客户端之间传输数据时进行安全保护。

即使您将信息保存在配置文件、数据库、注册表等中,Windows数据保护API仍可使用。 - Phil Bolduc
示例链接似乎已失效。如果有错别字或其他参考资料,请更新它。 - Harsh

0

您可以验证API是否在ASP.NET或Windows环境下使用(仅需检查请求是否为null),在第一种情况下使用cookie,在后一种情况下将其保存在注册表键上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接