7

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

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

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

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

4

3 回答 3

2

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

您应该阅读更多关于定义RESTful服务的内容,并开始自己实现它。

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

于 2012-08-18T02:12:13.117 回答
0

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

由于我使用了DJANGO REST Framework,您可以在此处找到设置。

于 2014-12-23T11:06:51.863 回答
0

正如您所说并使用了 SSL,我已经通过 api 密钥交换完成了它。工作得很好。有一些注意事项可以使 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);
}
于 2013-02-27T00:53:55.180 回答