Клиент StackExchange API и неявные против явного

Клиент StackExchange API и неявные против явного

20.05.2013 11:31:01 Просмотров 41 Источник

Этот вопрос вдохновлен документацией по API stackexchange и facebook ( http://api.stackexchange.com/docs/authentication ) но, вероятно, более широко применим к OAUTH 2.0 в целом.

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

Существуют ли ограничения, подразумеваемые неявным подходом,и какой метод является наиболее подходящим для узла.JS-приложение, которое технически является приложением на стороне сервера, но которое, похоже, подходит для использования клиентских библиотек javascript.

Редактировать

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

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

У вопроса есть решение - Посмотреть?

Ответы - Клиент StackExchange API и неявные против явного / Stackexchange API Implicit vs Explicit

Является ответом!
divyanshm

21.05.2013 01:25:34

Говоря о OAuth 2.0, а не о API stackexchange, в неявном потоке есть элемент риска, также называемый неявным потоком грантов . Это происходит потому, что сервер авторизации отправляет маркер доступа к вашему агенту пользователя/веб-браузеру.

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

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

Пример :-
Предположим, что есть какое-то приложение Google, которое использует API-интерфейсы Facebook graph. Вы можете открыть веб-сайт приложения google и авторизоваться
i) либо браузер получает токен, веб-страница, созданная приложением google, гарантирует, что он попадает в API, извлекает данные и возвращает их на сервер.
II) или браузер получает токен и страница возвращает его на сервер Google. Это гарантирует, что только Google может попасть в API Facebook (чувство облегчения для большой компании). Кроме того, есть центральный сервер, который управляет всеми запросами и может легко генерировать любые метрики для мониторинга запросов/чисел/шаблонов.

Еще одним важным использованием этого явного потока является автономный доступ . В приведенном выше сценарии сервер приложений может получать маркер обновления и вызывать API REST, даже если вы не вошли в систему.

Если у вас есть серверное приложение, я лично рекомендую использовать поток кода авторизации /явный поток.

https://stackoverflow.com/questions/16656958/stackexchange-api-implicit-vs-explicit/16666510#comment23979567_16666510
Спасибо за ответ. Это долгий путь к ответу. Я понимаю различия в реализации между двумя потоками и дополнительной безопасностью плюс возможность делать запросы off line с использованием маркеров доступа, которые не истекают, кажется хорошей причиной использовать явный поток, когда это возможно. Похоже, что истечение срока действия токена зависит от сервера авторизации, а не от пользователя, что кажется более правильным. Например, сайте StackOverflow не позволяет-действия жетона от неявного потока. Это означает, что клиентам легко использовать неявный поток для длительных сеансов без явного согласия пользователя.
https://stackoverflow.com/questions/16656958/stackexchange-api-implicit-vs-explicit/16666510#comment23985558_16666510
истечение срока действия маркера контролируется сервером, и никогда Пользователем в любой реализации OAuth. Прошу прощения, но я, возможно, не понял вопроса. Есть ли что-то конкретное, что вы хотели спросить? Потому что кажется, что ты сам себя спрашивал и сам себе отвечал. (Я часто это делаю!) Попробуйте быть более конкретным с требованием, это может помочь вам и мне некоторые другие тоже!! :)
Закрыть X