[英]How to correctly secure api credentials in a c# application
好的,所以只是一些关于设置的背景。
我目前有一个 Web Api2 项目,它是这个 Restful api 的服务器端。 客户端当前使用用户名/密码组合来获取不记名令牌,然后在随后的 api 调用中使用该令牌。 该项目存储在 GitHub 上的私有项目中。
我正在寻找构建和部署将利用此 api 的 ac# windows 服务。 与此 Windows 服务一起部署/存储凭据的最佳实践是什么。
我控制 api 的两端,我也将控制 Windows 服务的部署。 这将打包为 msi 并通过某些 3rd 方软件(自动化)进行部署。
以下是要求
所以我的问题是,我如何将 api 凭证获取到客户端,而不是纯文本,而是可用的格式?
或者我应该为 api 寻找不同类型的身份验证? 我对 oauth2 进行了简要介绍,但据我所知,您需要在客户端有人接受吗?
如果有人对如何实现这一点有任何建议或资源,那就太棒了。
我不是专家,但我有一个类似的案例,我会抓住机会获得一些反对票:0)
桌面/服务应用程序中的一种方法是要求用户输入凭据。 如果可能,那么这对您来说是最好的方法。 如果用户甚至可以输入一次凭据,您可以保存使用ProtectedData加密的数据(使用此类您不必在代码中保存加密密钥,这很容易提取(使用反射器...)) .
但是,如果您想自动执行此操作并存储凭据,则没有好的方法可以这样做。 您可以混淆凭据,并防止脚本小子看到它们,但对于更严重的黑客来说,破解将相当容易。
还有其他几种选择,但它们都是可破解的。 一种不同的方法是使用 MAC 地址和随机字符串(GUID 将完成工作)注册服务器上的每台机器,该字符串使用 ProtectedData 类保存,然后只有这个特定的键值对才能从中获取数据你的 API。 你在这里有两个问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.