Подтвердить что ты не робот

OAuth: сохранение токена доступа и секретности

У нас есть несколько клиентов, которые используют наш API для питания своих веб-сайтов.

Я начал разговор по поводу использования OAuth для создания аутентифицированных вызовов API. У нас будут два и три ножных потока.

Для потока с тремя ногами мы до сих пор не пришли к консенсусу относительно того, как хранить токен доступа и секрет.

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

Другие варианты, которые мы рассматриваем:

1) Сохранение маркера доступа и секрет в файле cookie

2) Сохранение их в сеансе.

Я не уверен, является ли это хорошей идеей. У кого-нибудь есть предложения?

Спасибо.

4b9b3361

Ответ 1

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

Сессия и файлы cookie будут работать для сохранения токенов, но проблема в том, что это ваш потребитель (ваши клиенты), который должен сохранять их, а не вы. Звонки на ваш API происходят в фоновом режиме, поэтому в этой области нет реального сеанса или файла cookie. Если вы делаете только вызовы JavaScript, возможно, это работает, но даже тогда обычно вызовы выполняются через прокси-сервер, чтобы не было проблем с междоменным скриптингом.

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

Вы можете сослаться на Пример приложения для .NET, написанного с использованием MVC 5 Razor engine

Ответ 2

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

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

Ответ 3

У меня была такая же проблема, когда я реализовал трехногий oauth. Я взял приложение онлайн на Google App Engine и использовал Google DataStore для хранения токенов доступа.

Однако квота упоминает здесь для хранения данных и метания запросов! Это единственное ограничение при использовании Google App Engine!

Ответ 4

около 1) Сохранение токена доступа и секрет в файле cookie

рассмотрите своего клиента в интернет-кафе и что произойдет после того, как он не очистит файлы cookie, а следующий человек скопирует эту информацию?

Я бы пошел на сеанс DB или PHP