保护移动应用程序对 Web 服务的访问(本土方法)

Posted

技术标签:

【中文标题】保护移动应用程序对 Web 服务的访问(本土方法)【英文标题】:Securing Mobile app access to a WebService (home-grown approache) 【发布时间】:2012-02-14 05:25:31 【问题描述】:

我有一个需要从移动 (iPhone) 应用程序访问的 HTTPS WebService。都是我们自己开发的。

我们需要确保移动设备访问此服务。所以我们使用了用户名/密码凭据。

我们知道OAuth,但我们需要一个更简单的身份验证方案。

我们的想法如下:

    移动应用向用户/资源所有者显示登录表单。

    资源所有者输入移动应用程序的登录凭据。

    Mobile 应用程序以特殊的 WS 方法(例如“ValidateLogin”)连接到 服务器,该方法将用户名/密码 - 可能经过哈希处理 - 作为输入并返回HTTP Session Id

    Mobile 应用程序保留 HTTP Session Id - 这是来自服务器端的唯一密钥,可能是安全的?- 与 服务器用于后续请求(调用业务方法)。

    如果 Client 在 30 分钟内没有与 Server 通信,Server 将发送 403/Session_time_out ( Mobile 可能会删除持久化的HTTP Session Id 以向自己表明他不再有权访问 Server 资源 - 如果需要,它可能会选择这样做结束与服务器的通信)

    在这种情况下,Mobile 将需要再次使用 Resource OwnerServer 获取新的会话 ID并获得对服务器资源的访问权。


问题是:

上述步骤是否足以依赖? 您如何看待安全问题? 您还有其他想法/意见吗?

EDIT:这是一个HTTPS WebService

【问题讨论】:

我想我会实现它code.google.com/p/smauth 【参考方案1】:

这个问题本质上是非常开放的,我认为很难根据您的具体需求来回答这些一般性问题。

回答一些具体问题: 如何保护您的应用免受未经授权的客户的攻击? 看看 SSL 和Client side certificates。

如何安全地管理用户凭据? 看看在 ios 中使用Keychain API。

【讨论】:

只是好奇:你的意思是说我的回答的某些部分与 HTTPS 相关吗? 不,我的意思是我已经在使用 HTTPS。 To answer some concrete questions: How to secure your app against unauthorized clients? Look at SSL and Client side certificates.

以上是关于保护移动应用程序对 Web 服务的访问(本土方法)的主要内容,如果未能解决你的问题,请参考以下文章

从Web浏览器打开/关闭移动手电筒

保护 Grails REST 服务以用于移动应用程序

仅由一个或两个客户端使用的 java 中保护 RESTful Web 服务的不同方法?

保护 Web 服务

有啥方法可以保护在开源项目中进行的 Web 服务调用? [关闭]

如何在不使用身份验证的情况下保护 RESTful Web 服务