Веб-сервисы RESTFUL, используемые веб-приложениями и собственными мобильными приложениями, с аутентификацией в python с использованием фреймворка django.

Мне нужно написать веб-сервисы RESTFUL с аутентификацией на python с использованием фреймворка django, который будет использоваться веб-клиентами и мобильными приложениями (Android и IOS).

простым примером может быть то, что пользователь войдет в систему, используя адрес электронной почты и пароль, он извлечет ключ API и сохранит его на мобильном устройстве, а затем использует этот ключ API для использования дополнительных API вместо того, чтобы снова и снова предоставлять учетные данные пользователя.

Я думаю об использовании поршня TASTYPIE или Django для написания сервисов RESTFUL, но, пожалуйста, предложите иное, если вы знаете какое-либо лучшее решение.

Но основное внимание я уделяю части аутентификации. Должен ли я использовать OAuth для реализации аутентификации или простой базовой аутентификации через ssl с API-ключом в ответ будет достаточно.


person Muneeb Ahmad    schedule 18.08.2012    source источник
comment
Всегда проектируйте для простоты, всегда легко добавить сложности к простоте, но всегда сложно добавить простоты к сложности. Я выбираю второй вариант, используя уже существующие функции в протоколе HTTPS, или третий вариант, стандартную аутентификацию на основе клиента https?   -  person Anders    schedule 18.08.2012


Ответы (3)


Вы можете написать веб-службу RESTful со стандартной библиотекой Python, сторонние библиотеки не являются абсолютно необходимыми.

Вам следует больше узнать о том, что определяет службу RESTful, и приступить к ее реализации самостоятельно.

Я использую cherrypy в качестве легкой основы в нескольких проектах. Он прост и удобен в использовании. На веб-сайте даже есть раздел о том, как внедрить REST в ваше приложение.

person Aesthete    schedule 18.08.2012
comment
Есть ли у вас опыт написания RESTFUL API, который требует AUTH и используется нативными мобильными приложениями. Написание службы RESTFUL может не быть проблемой, но я искал часть аутентификации, и помощи не так много. Спасибо за вашу помощь. - person Muneeb Ahmad; 18.08.2012

Я сделал это с помощью обмена ключами 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);
}
person Cassio Landim    schedule 27.02.2013

Я использовал OAUTH2, который проще в реализации, чем OAUTH, но требует SSL, чтобы сделать его безопасным.

Поскольку я использовал DJANGO REST Framework, вы можете найти настройку, здесь.

person cvicente    schedule 23.12.2014