Что означает "автономный" доступ в OAuth?

Что означает слово "офлайн" в отношении автономного доступа, предоставленного сервером OAuth?

Означает ли это, что сервер ресурсов вернет данные о пользователе, даже когда пользователь выйдет из стороннего приложения или когда пользователь выйдет из сервера ресурсов OAuth, такого как Facebook или Google или Twitter?

Ответ 1

Автономный доступ - это очень плохое имя для ИМО, и я думаю, что его термин только для Google использует его не в RFC для Oauth, насколько я помню.

Что такое Google вне сети?

Когда вы запрашиваете автономный доступ, сервер аутентификации Google возвращает токен обновления. Обновить токены дают вашему приложению возможность запрашивать данные от имени пользователя, когда пользователь отсутствует и перед вашим приложением.

Пример приложения, нуждающегося в доступе к линии:

Давайте скажем, что у меня есть приложение Super Awesome, которое загружает ваши данные Google Analytics, делает его приятным PDF файлом и отправляет его вам каждое утро с вашей статистикой. Для этого мое приложение должно иметь возможность получать доступ к вашим данным Google Analytics, когда вас нет рядом, чтобы дать мне разрешение на это. Таким образом, приложение Super Awesome будет запрашивать автономный доступ, а сервер аутентификации будет возвращать токен обновления с помощью этого токена обновления. Супер удивительное приложение может запросить новый токен доступа, когда захочет, и получить данные Google Analytics.

Пример приложения, не нуждающегося в доступе к сети

Давайте попробуем Less awesome app, который позволяет загружать файлы на Google Диск. Менее простое приложение не нуждается в доступе к вашей учетной записи Google Диска, когда вы не находитесь рядом. Ему нужно только получить доступ к нему, когда вы в сети. Поэтому теоретически ему не нужен автономный доступ. но на практике он все равно получает токен обновления, так что вам не придется снова запрашивать разрешение, вот где я думаю, что именование неверно.

документация материал

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

Правда об автономном доступе

Дело в том, что во многих случаях сервер аутентификации вернет вам токен обновления, независимо от того, что вам не нужно, чтобы попросить что-либо, что он вам дает. Предоставляя вам доступ к данным пользователей, когда их нет. Пользователи не знают, что вы можете получить доступ к данным без их присутствия. (Его единственная библиотека javascript, и я думаю, что библиотека PHP, которая скрывает RefreshToken от вас, но там)

Пример. Вы можете протестировать это с помощью следующих инструкций Google 3-х точечный поток Oauth

Но просто размещение

https://accounts.google.com/o/oauth2/tokenКод = {AuthCode} & client_id = {ClientID}.apps.googleusercontent.com & client_secret = {ClientSecret} & redirect_uri = урна: IETF: Рабочая группа по OAuth: 2,0: OOB & grant_type = authorization_code

Ответ:

{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}

Теперь у меня нет доступа к данным для этих пользователей, и я никогда не говорил им, что буду иметь его.

Ответ 2

По дизайну токены доступа, возвращаемые потоком OAuth, истекают через определенный промежуток времени (1 час для токенов доступа Google) в качестве механизма безопасности. Это означает, что любое приложение, которое хочет работать с пользовательскими данными, нуждается в том, чтобы пользователь недавно прошел поток OAuth, а также был онлайн. Запрос автономного доступа предоставляет приложению токен обновления, который он может использовать для создания новых токенов доступа, позволяя ему получать доступ к пользовательским данным задолго до того, как данные прошли через поток OAuth, а также когда они находятся в автономном режиме.

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

Для API Google вы можете запросить автономный доступ, включив параметр access_type = offline в URL-адресе авторизации, который вы представляете своим пользователям. Автономный доступ и, следовательно, обновление токенов, запрашивается автоматически при использовании Установленный поток приложений.