我们有一个托管WebBrowser控件的Windows应用程序,它可以访问我们的REST API。我们希望限制对API的访问仅限于使用Windows应用程序本身(例如,无法在浏览器中访问API等)。
我们怎样才能做到这一点?什么是最安全的方式,而不必暴露任何类型的凭证(例如,如果我们使用HTTP Basic auth,用户名和密码可以通过逆向工程应用程序本身看到)?
非常感谢!
编辑:我们计划自由分发应用程序,因此我们无法控制连接的位置。
答案 0 :(得分:1)
将REST接口限制为仅接受来自127.0.0.1(home)的连接,然后仅使用URL中的http://localhost或http://127.0.0.1从您的其他消费应用程序进行连接(如果您使用外部IP)或者您的机器的DNS名称,它将被视为远程连接并被拒绝访问)。
您可以使用Web服务器设置或REST API代码
执行此操作答案 1 :(得分:0)
我在项目期间遇到了类似情况,我们分发了一个iPhone应用程序,该应用程序也连接到我的团队开发的REST API。
为了安全起见,我们使用了一些三条腿的方案。该应用程序需要使用用户的凭据对仅负责验证和生成访问令牌的独立服务进行身份验证。应用程序收到有效的访问令牌后,对api的后续请求需要在Authorization标头中发送此令牌。
你可以做类似的事情。如果您想出一个凭据方案来将您的应用验证为有效的API消费者,您可以使用基本的auth over HTTPS来获取令牌,然后只有使用这些令牌,消费者才能访问其余的API。