dar*_*ren 18 authentication rest authorization playframework
我一直在寻找一种方法来保护我的RESTful API.这似乎很简单,但似乎并不那么简单.首先,我正在编写一个连接到Play Framework服务器的iOS应用程序.这些都与Google,Facebook,Twitter或LinkedIn无关(令我感到震惊).哦,我目前的计划不要求自定义应用程序使用我的API,它只是我的应用程序暂时.
基本认证
看似简单的是管理cookie会话的/ auth方法的基本用户/传递.这可能会引起一些呻吟声,因为它太简单或太弱,但主要是它将身份移动到快速验证的会话密钥.我最初的设置是每天使会话过期,但这导致iOS应用程序每天强制登录,这证明是一个烦恼.
OAuth的
我在iOS主板上发布了一个问题,并对OAuth采取了直截了当的指示.我对OAuth的研究开始了,但是神圣的事情很复杂,似乎没有任何服务器端的例子......只是很多人抱怨它有多么令人沮丧.所有客户端示例都显示连接到Google,Facebook,Twitter和LinkedIn.哦,欢乐!
看完Eran Hammer对OAuth1和OAuth2的咆哮后,继续看起来毫无结果,他的OZ想法(看起来很干净)只是在node.js的早期阶段.
题
所以,我对广泛的StackOverflow社区的问题是......你如何保护REST API?
我建议考虑最大的参与者使用的方法,即亚马逊网络服务或Windows Azure - HMAC.虽然它在实现上并不舒服,但您可以看到它是值得信赖的技术.
一般的想法是使用密钥在iOS中签署请求的部分(即标题),并尝试在Play应用程序上重新计算它,以验证请求是否可信并且未被操纵.如果它不会失败,你可以(几乎)确定,这是从使用有效密钥的某人发送的.
查看Windows文档 以获取概念(我认为对于常见任务,您可以使用较少数量的用于签名的元素).
还有其他有趣的帖子(基于AWS身份验证),它更好地描述了整个过程.
编辑
当然你应该意识到iOS中的身份验证和保护API请求是不同的事情,即使你每15分钟就会使你的会话失效,你也不能确定有人不会偷听它然后就能发送一个来自外部的虚假请求.签署每个请求应该将风险降至最低.
另一方面,如果您准备明确的签署请求的规则并将编写简短的文档(我甚至为您自己推荐),您可以将其交付给其他开发人员,他将能够实现它(几乎)支持SHA256的任何平台,因此您将准备好使用第3方应用程序的API - 如果您决定将来发布它.
| 归档时间: |
|
| 查看次数: |
7760 次 |
| 最近记录: |