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

OAuth2 и API Google: срок действия токена доступа?

У нас есть автономное приложение Java (см. "Установленное приложение": https://developers.google.com/accounts/docs/OAuth2), который выполняется периодически и использует API google (обновляет некоторую информацию из баз данных клиентов /ldap/...).

Для доступа к API Google мы храним имя пользователя и пароль в файле конфигурации, что представляет собой угрозу безопасности, и клиенту это не нравится. Поэтому мы хотели бы использовать токен доступа OAuth2.

какое время истечения срока действия для токенов доступа Google OAuth2?

Поскольку у нас будет только токен доступа в приложении, приложение не сможет обновить его, когда истекает токен доступа...

Лично я считаю, что реализация OAuth2 в этом случае не принесет существенных преимуществ, но давайте сосредоточимся на главном вопросе - время истечения по умолчанию.

4b9b3361

Ответ 1

Вы не должны проектировать свое приложение на основе конкретных сроков доступа токенов доступа. Предположите, что они (очень) недолговечны.

Однако после успешного завершения установленного потока приложений OAuth2 вы вернете токен обновления. Этот токен обновления не истекает, и вы можете использовать его, чтобы обменять его на токен доступа по мере необходимости. Сохраните токены обновления и используйте их для получения токенов доступа по требованию (которые затем должны быть немедленно использованы для доступа к пользовательским данным).

EDIT: Несмотря на мои комментарии выше, есть два простых способа получить время истечения токена доступа:

  • Это параметр в ответе (expires_in) при обмене токеном обновления (с использованием /o/oauth 2/endken endpoint). Подробнее.
  • Существует также API, который возвращает оставшееся время жизни access_token:

    https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= {accessToken}

    Это вернет json-массив, который будет содержать параметр expires_in, который представляет собой количество секунд, оставшихся в течение жизни токена.

Ответ 2

По умолчанию expiry_date для токена доступа google oauth2 составляет 1 час. Время expiry_date находится в эпохе Unix в миллисекундах. Если вы хотите прочитать это в человекообразном формате, вы можете просто проверить его здесь. Unix отметка времени для чтения человеком

Ответ 3

Вот еще одно замечание к вопросу истечения срока действия токена доступа Google. У меня есть сервер, который использует Google Oauth2, и он использует конечную точку https://www.googleapis.com/oauth2/v3/userinfo?access_token=YOUR_ACCESS_TOKEN для первого уровня аутентификации. То, что я нашел, это то, что используется таким образом, токен доступа имеет гораздо более длительный срок службы, чем 60 минут. Я не уверен, что он истекает, когда используется только таким образом.

Кто-нибудь видел документацию об истечении срока действия токенов доступа, используемых только таким образом?

Ответ 4

ОБНОВЛЕНИЕ июль 2019


Учитывая, как этот вопрос задавался еще в 2012 году и как часто меняются веб-стандарты, я бы хотел добавить свои 2 цента к этому вопросу.

Перейдя по этой ссылке: https://developers.google.com/identity/protocols/OAuth2WebServer

accessToken что accessToken истекает через 3920 секунд, что равно 1 часу 5 минутам и 20 секундам. Таким образом, IMO, accessToken должен обновляться примерно через 1 час или 3600000 миллисекунд (сохраняя 5 минут и 20 секунд в качестве времени безопасной зоны, учитывая вероятность того, что подключение к Интернету может быть недоступно сразу или оно очень медленное и т.д. И т.д.). среди множества других возможных проблем).