У нас есть несколько клиентов, которые используют наш API для питания своих сайтов.
Я начал разговор о работе с OAuth, чтобы сделать аутентифицированные API-вызовы. У нас будут два и три ножных потока.
Для потока с тремя ногами мы до сих пор не пришли к консенсусу относительно того, как хранить токен доступа и секрет.
Общий подход к этой проблеме заключается в том, чтобы клиенты хранили ток доступа и секрет в своей собственной БД, но это не может быть и речи, поскольку клиенты не хотят иметь дело с изменениями кода и проблемами реализации.
Другие варианты, которые мы рассматриваем:
1) Сохранение токена доступа и секрет в файле cookie
2) Сохранение их в сеансе.
Я не уверен, является ли это хорошей идеей. У кого-нибудь есть предложения?
Спасибо.
Я предполагаю, что вы говорите о типичных настройках «Поставщик услуг», «Потребитель» и «Пользователь». Я не знаю, сможете ли вы реализовать трехсторонний аут, если ваши потребители (клиент) отказываются вносить какие-либо изменения.
Сеанс и файлы 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