2013-07-15 2 views
0

Я ищу использование OAuth для защиты некоторых веб-сервисов. OAuth 2 подходит для использования в случаях использования, когда пользователь может получить доступ к своим собственным данным с помощью API или предоставить доступ к кому-либо, чтобы вызвать API от его имени.Руководство по генерации токенов доступа OAuth

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

Если пользователь является разработчиком, то

  1. есть экран, где он/она может зарегистрировать заявку. Это создаст ключ API/секретную пару.
  2. Для доступа к своим собственным данным (для 2-х месяцев Auth) есть экран пользовательского интерфейса, где пользователь может создать токен доступа для одного зарегистрированного приложения. Он может указать области и продолжительность в форме.
  3. Если он является сторонним разработчиком, ему необходимо передать его API API приложений лицу, от имени которого ему необходимо получить доступ к API и получить токен доступа взамен.

Если пользователь хочет другое приложение/разработчика, чтобы получить доступ к API от его имени, то

  1. Есть экран, на котором он может ввести ключ API третьей стороны, объемы и продолжительность разрешения. Он может передать созданный токен доступа разработчику, который получит доступ к API-интерфейсу

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

ответ

0

Проблема в основном заключается в безопасности. По дизайну, продолжительность токена доступа не должна устанавливаться клиентом. Если кто-то еще узнает токен доступа и идентификатор клиента в течение этого времени, учетная запись этого пользователя будет скомпрометирована. Обычно эта длительность устанавливается не очень длинной, а токер обновления второго секретного значения используется для обновления текущего токена доступа. Обновление токенов может быть автоматизировано в коде, но в вашем подходе это нужно будет сделать вручную.

+0

Конечно, это было бы тривиально решить, просто не предоставив опцию для истечения срока действия токена и получив его, как бы это было в естественном потоке. Вся причина, по которой я пытаюсь принять этот подход, заключается в том, что клиенты не захотят проходить через код (или не способны) только для OAuth. Кроме того, мои API будут на HTTPS, поэтому получение токена доступа не будет тривиальным. Не уверен, что я понимаю вашу точку зрения на то, что кто-то получает доступ к идентификатору клиента и к токену доступа, поскольку, если это произойдет, я буду вкручен, независимо от того, какой подход я беру. – anfab

+0

HTTPS хорош, если у вас есть код, который заботится о Oauth. Но как только вы сделаете это руководство, вы не можете полагаться на разработчика, чтобы убедиться, что он использует его только в правильных местах. Он может быть обменен на электронную почту, чат, опубликовать заметки и что нет. Добавленный с не-expire на сгенерированных токенах доступа, это только увеличивает вероятность того, что некоторые вины будут происходить со временем. – s1d

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