保护移动应用程序对 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 Owner 从 Server 获取新的会话 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 服务的访问(本土方法)的主要内容,如果未能解决你的问题,请参考以下文章
仅由一个或两个客户端使用的 java 中保护 RESTful Web 服务的不同方法?