主要方法是添加一些登录/帐户系统。那当然需要管理和所有这一切。
其他海报只是将一些密钥或证书放入其中的方法只有在不重要的情况下才有效。您在应用程序中存储的任何内容都是可反向工作的。因此,如果某人有正确的决心,那么这种保护水平很容易克服。
如果可能的消费者数量足够小,另一种方法可能会起作用: 使其只能从本地网络(与本地网络关联的IP地址范围)访问。然后使用VPN之类的方法,以便客户端可以连接到本地网络。基本上,您将帐户部分移动到另一个系统。但是这种方法可能存在安全问题,特别是如果VPN连接直接进入DMZ。
最后,它真的取决于它的重要程度。安全存在于“任何人阅读他的计算机网络流量与Wireshark可以打破它”到“合理安全的高级私人数据”的口味。我们不知道您需要什么级别的安全性以及您拥有的技能水平,因此我们暂时无法提供有用的答案。
我建议您考虑使用证书来加密您的Web服务,然后您的应用程序将使用相同的加载证书来调用它。只有拥有服务器证书密钥的实体才能解密您的呼叫。
使用证书身份验证访问Web服务和HTTP接口
用用户名和密码调用rest api - 如何
编辑:如果你不能使用证书方法,因为你是直接打电话给浏览器,你可能想看一下某种授权cookie,所以我们可以在你的登录页面上说这个请求可能对公众开放,但是所有后续请求您需要身份验证,一旦用户登录,您依靠授权cookie或令牌来验证他们是否有权访问。
另一种方法:IdentityServer实例具有提供者令牌存储,因此您可以从商店请求令牌,然后只能使用已颁发的令牌访问API。然后,您的API也会查询商店以检查令牌是否有效。
我找到了一个非常简单的解决方案..通过在Web服务中获取远程客户端的IP地址,我可以验证请求是否来自我的网络服务器
所以任何时候如果任何垃圾邮件客户端尝试请求我的Web服务我将在webservice内的每个请求上检索其ip并拒绝ex的请求:
if (HttpContext.Current.Request.UserHostAddress.ToString() == "127.0.0.1") { return "my server"; } else { return "invalid client or spammer" }