使用django框架在python中使用身份验证的Web和本机移动应用程序所使用的RESTFUL Web服务

时间:2012-08-18 01:52:31

标签: python django rest tastypie django-piston

我必须使用django框架在python中编写带有身份验证的RESTFUL Web服务,该框架将由基于Web的客户端和移动本机应用程序(Android和IOS)使用。

简单的例子是用户将使用电子邮件和密码登录,他获取api密钥并将其存储在移动设备上,然后使用此api密钥消耗更多api,而不是一次又一次地提供用户凭据。 / p>

我正在考虑使用TASTYPIE或Django活塞来编写RESTFUL服务,但如果您知道更好的解决方案,请另外建议。

但我主要关注的是身份验证部分。我应该使用OAuth来实现身份验证,还是使用api-key对ssl进行简单的基本身份验证就足够了。

3 个答案:

答案 0 :(得分:2)

您可以使用python标准库编写 RESTful Web服务,第三方库不是绝对必要的。

您应该详细了解定义 RESTful 服务的内容,并自行开始实施。

对于它的价值,我在一些项目中使用cherrypy作为轻量级框架。它简单易用。该网站甚至还有一个关于如何在您的应用程序中实施 REST 的部分。

答案 1 :(得分:0)

我已经使用api密钥交换完成了,就像你说的那样并使用了SSL。工作得很好。有一些注意事项可以使https请求在Android上正常工作。

private static HttpClient newHttpClient() {
    KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
    trustStore.load(null, null);

    SSLSocketFactory sf = new EasySSLSocketFactory(trustStore);
    sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    HttpParams params = new BasicHttpParams();
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    registry.register(new Scheme("https", sf, 443));

    ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
    return new DefaultHttpClient(ccm, params);
}

答案 2 :(得分:0)

我使用过OAUTH2,它比OAUTH更容易实现,但需要SSL才能真正使其安全。

由于我使用了DJANGO REST Framework,您可以找到设置here