好的,这只是设置的一些背景知识。
我目前有一个Web Api2项目,它是这个restful api的服务器端。客户端当前使用用户名/密码组合来获取承载令牌,然后在后续的api调用中使用该令牌令牌。该项目存储在GitHub上的私人项目中。
我正在寻找构建和部署将使用此api的c#windows服务。 与Windows服务一起部署/存储凭证的最佳做法是什么。
我控制api的两端,我也将控制Windows服务的部署。这将打包为msi并通过某些第三方软件(自动化)进行部署。
以下是要求
所以我的问题是,如何将api凭据提供给客户端,而不是以纯文本形式,而是以可用的格式?
或者我应该为api寻找不同类型的身份验证?我简要介绍了oauth2,但据我所知,你需要有人在客户端接受吗?
如果有人对如何实现这一点有任何建议或资源,那就太棒了。
答案 0 :(得分:1)
我不是专家,但我有类似的情况,我会抓住机会获得一些投票:0)
桌面/服务应用程序中的一种方法是要求用户输入凭据。如果有可能,那么这是最适合您的方式。 如果用户甚至可以输入一次凭证,则可以使用ProtectedData保存加密的数据(使用此类,您无需在代码中保存加密密钥,这很容易提取(使用反射器)。 ..))。
但是,如果您想自动执行此操作并存储凭据,则无法做到这一点。 您可以对凭据进行模糊处理,并防止脚本小孩看到它们,但对于更严重的黑客来说,它很容易被黑客攻击。
还有其他一些选择,但它们都是hackables。 另一种方法是使用MAC地址和随机字符串(GUID将完成工作)在服务器上注册每台计算机,使用ProtectedData类保存,然后只有这个特定的键值对才能从中获取数据你的API。 你有2个问题: