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

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

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

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

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

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

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

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

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

Спасибо.

Solutions Collecting From Web of "OAuth: сохранение токена доступа и секретности"

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

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

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

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

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

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

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

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

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

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

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