我必须使用django框架在python中编写带有身份验证的RESTFUL Web服务,该框架将由基于Web的客户端和移动本机应用程序(Android和IOS)使用。
简单的例子是用户将使用电子邮件和密码登录,他获取api密钥并将其存储在移动设备上,然后使用此api密钥消耗更多api,而不是一次又一次地提供用户凭据。 / p>
我正在考虑使用TASTYPIE或Django活塞来编写RESTFUL服务,但如果您知道更好的解决方案,请另外建议。
但我主要关注的是身份验证部分。我应该使用OAuth来实现身份验证,还是使用api-key对ssl进行简单的基本身份验证就足够了。
答案 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。