2016-01-24 6 views
-1

Я пытаюсь разработать приложение, которое будет запускаться локально на компьютере пользователя. Я хочу использовать Dropbox API для хранения и синхронизации некоторых файлов, специфичных для приложения.Как аутентифицироваться с помощью Dropbox API из настольного приложения?

Всюду по документации Dropbox предполагается, что приложение является веб-приложением. Похоже, что единственный вариант аутентификации - через OAuth. Если приложение запускается на моем собственном сервере, то не проблема хранить секретный код приложения (что требуется для OAuth, как видно из the example). Но в моем случае, если я запустил веб-сервер, который реализует OAuth на компьютере пользователя, мне придется опубликовать секрет .

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

Итак, мой вопрос:
Есть ли лучший способ аутентификации с помощью Dropbox API с компьютера пользователя?
Или это нормально, чтобы опубликовать приложение secret?

+0

Вам всегда нужно сделать шаг сначала авторизовать приложение для OAuth-2.0 - который может быть на сервере глобального, но после получения разрешения, на рабочем столе приложение должно хранить только refresh- токен для пользователя. Секрет никогда не должен публиковаться. – pticawr

ответ

2

Конечно, нежелательно публиковать секрет приложения, поэтому в OAuth 2, включая реализацию Dropbox, существует механизм обработки потока OAuth в клиентском приложении без использования секретности приложения.

В частности, на стороне клиента приложения должны использовать "маркер" поток (в отличие от "код" потока), как описано here under /oauth2/authorize:

OAuth 2.0 поддерживает два разрешения потоков:

  • Поток кода возвращает код через обратный вызов redirect_uri, который затем должен быть преобразован в токен-носитель, используя вызов/oauth2/token. Это рекомендуемый поток для приложений, работающих на сервере.

  • Токен или неявный поток гранта возвращает токен-носитель через обратный вызов redirect_uri, вместо того чтобы требовать от вашего приложения повторного вызова на сервер. Это полезно для чистых клиентских приложений, таких как мобильные приложения или приложения на основе JavaScript.

К сожалению, в случае приложений на стороне клиента Python, поток OAuth в Dropbox Python SDK в настоящее время построен только с серверными приложениями в виду, и поэтому реализует только поток кода, а не токен. Это открытый исходный код, поэтому вы можете изменить его, если/по желанию, или реализовать поток токенов отдельно.

-1

В качестве более простого решения вы можете опубликовать кодированный secret и декодировать его на стороне сервера.

Это просто из соображений безопасности

+0

(не downvoter) Это не поможет, потому что все дело в том, что у вас нет сервера. И если у меня есть сервер, я могу просто хранить * секрет * там. –

Смежные вопросы