2012-02-29 90 views
6

我想为移动客户端添加一个REST接口到Django。移动客户端将通过HTTPS使用JSON。我一直无法找到用于移动设备的“最佳”方式。从四处搜索,似乎#2更有利于#1:如何保护移动应用程序的REST API?

  1. 使用HTTP身份验证并建立基于cookie的会话。所有事务都将通过HTTP进行,而JSON消息将仅包含命令或数据。
  2. 将每个JSON消息中的用户名和密码(加密的)传递给所有事务,并且不要依赖基于cookie的会话。

回答

1

数字2是更可取的,而不是推出自己的,我会建议使用OAuth身份验证,如果可能的话。客户端和服务器库现在都可以在大多数平台上使用。详情请查询http://oauth.net

+0

任何链接到设计这个问题的文档/模式? – QED 2012-02-29 23:07:44

+0

我肯定会从上面提到的Oath.net网站的“入门”部分开始。它可以链接到今天可用的大部分OAuth信息。 – 2012-02-29 23:12:14

+0

糟糕,我的意思是REST – QED 2012-02-29 23:44:50

3

除非您希望将这些服务提供给其他开发人员(他们将代表您的最终用户访问),否则OAuth会过度使用。更好的选择2,但我会建议使用摘要式身份验证而不是密码身份验证。把它和SSL结合起来,你绝对会很好。

0

只要你使用真正的加密,而不是base64或一些自制的混淆算法,#2是好的,花花公子。您可能还想考虑许多公司采用的路线,即将API密钥绑定到用户名。

+0

如果所有内容都以SSL方式发送,是否还需要加密? – ewhitt 2012-03-01 09:13:08

+0

SSL是加密。它只是在通信堆栈的不同层加密 - SSL加密整个通信通道而不是仅仅选择特定消息的内容。因此它通常更昂贵。做这两件事可能会浪费资源。 – QED 2012-03-01 18:36:51

8

我建议首先用登录电话发送用户名/密码。 JSON将传回一个authToken或accessToken,移动设备将为其后的所有呼叫返回。然后您将检查以确保authToken有效。这是许多API所采用的方法。在他们的数据库中,他们将API密钥绑定到他们登录的用户帐户。

+0

谢谢。我喜欢这种方法。这种截断类型有一个名字或我可以进一步偶然的谷歌? – ewhitt 2012-03-02 03:09:36

+0

@ewhitt它被认为是基于令牌的认证http://upcoming.yahoo.com/services/api/token_auth.php – Bot 2012-03-02 16:16:46

相关问题