2010-09-02 51 views
1

我们有一个Windows应用程序托管一个WebBrowser控件,它会触发我们的REST API。我们希望将对API的访问限制为仅来自Windows应用本身(例如,不能在浏览器中访问API等)。只允许从我自己的应用程序访问我的REST API?

我们该如何做到这一点?什么是最安全的方式,而不必公开任何类型的证书(例如,如果我们使用HTTP基本身份验证,用户名和密码可以通过逆向工程应用程序本身来看到)?

非常感谢!

编辑:我们计划自由分发应用程序,所以我们无法控制连接将从哪里进行。

+0

你有没有得到满意的答案这个问题? – 2016-12-11 08:19:20

回答

1

限制REST接口为只接受来自127.0.0.1(家)的连接,然后从你的休息,消费应用程序仅在网址http://localhosthttp://127.0.0.1连接(如果你使用你的机器的外部IP或者DNS命名将被视为远程连接并被拒绝访问)。

您可以用Web服务器的设置做到这一点,或者你的REST API的代码中

+0

我们计划分发应用程序,所以我们无法控制连接的来源。 – TopQ 2010-09-02 20:21:39

+0

127.0.0.1是机器内部网络接口的通用IP--任何计算机(Linux,Unix,Windows,Mac)都能识别localhost和127.0.0.1。如果您正在分发,那么您会希望将该限制编码到您的REST API中,这样您就不会依赖最终用户的Web服务器配置。 – Rudu 2010-09-02 21:22:40

+0

你能详细说明一下吗?我不太明白在本地主机上“聆听”如何提供帮助?我是服务提供商,也正在分发应用程序以访问服务,而无需任何用户注册过程。 – TopQ 2010-09-02 22:08:37

0

我有一个项目中,类似的情况,我们分布也连接到我的团队开发的REST API的iPhone应用程序。

为了安全起见,我们使用了三段式的场景。该应用程序需要使用用户的凭证进行身份验证,以对付只负责验证和生成访问令牌的独立服务。一旦应用程序收到有效的访问令牌,后续对API的请求就需要在授权标头中发送该令牌。

你可以做类似的事情。如果您想出一个凭证方案来将您的应用程序认证为有效的API消费者,则可以使用基于HTTPS的基本身份验证来获取令牌,然后只有使用这些令牌,消费者才能访问API的其余部分。

+0

令牌是否随时间变化或对同一用户保持不变?如果它保持不变,iPhone的用户不能在你的应用之外以任何其他方式使用它吗? – TopQ 2010-09-09 18:08:38

+0

这些令牌对每个用户都是唯一的,每个用户都有一个生命周期,并且验证该令牌是否在允许的生命周期内是验证过程的一部分,以及生成时指定的其他几个字段。在返回之前,令牌在服务器上也被加密。 – 2010-09-09 18:56:19

+0

与我们正在做的是我们的区别是基于用户凭据,并不特别限于我们的iphone应用程序。你需要想出一个类似的方式,但验证你的应用程序与验证用户。 您可以这样做的一种方法是,通过向应用程序颁发证书并将其用于客户端验证。 – 2010-09-09 19:00:28

相关问题