token expired что значит

Как определить, истек ли токен OAuth?

Здесь информация о обновлении токена OAuth 2.0.

Истекает в определении

Стандарт OAuth 2.0, RFC 6749, определяет поле expires_in как количество секунд до истечения срока действия:

expires_in: РЕКОМЕНДУЕТСЯ. Время жизни в секундах токена доступа. Например, значение “3600” означает, что срок действия маркера доступа истечет через один час после создания ответа. Если опущено, сервер авторизации ДОЛЖЕН предоставить время истечения срока действия другими средствами или задокументировать значение по умолчанию.

Обработка обновления токена: метод 1

Примером реализации является библиотека Go oauth2 которая преобразует значение expires_in в дату-время RFC 3339 в свойстве expiry токена. expiry не определен стандартом OAuth 2.0, но полезен здесь.

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

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

Обработка обновления токена: метод 2

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

Если вы попытаетесь использовать просроченный access_token и у вас access_token ошибка токена, вам следует выполнить обновление токена (если ваш токен обновления все еще действителен). Поскольку разные службы могут использовать разные коды ошибок для маркеров с истекшим сроком действия, вы можете либо отслеживать код для каждой службы, либо простой способ обновить токены между службами – просто попробовать выполнить одно обновление при обнаружении ошибки 4xx.

Недопустимые ошибки токена доступа

Ниже приведены некоторые коды ошибок от популярных сервисов:

Обновить срок действия токена

Если refresh_token действия refresh_token также истек, вам нужно будет снова пройти процедуру авторизации.

Спецификация OAuth 2.0 не определяет срок действия маркера обновления или способы его обработки, однако ряд API-интерфейсов вернет свойство refresh_token_expires_in когда токен обновления истечет. Разные API будут по-разному обрабатывать истечение срока действия маркера обновления, поэтому важно просматривать документы по API, но обычно вы можете получить новый токен обновления, когда обновляете свой токен доступа. Истечение срока действия должно обрабатываться аналогичным образом, например, путем преобразования refresh_token_expires_in в значение даты-времени refresh_token_expiry в RFC 3339.

Рекомендовал бы метод 2 выше, так как 401 может произойти по нескольким причинам, таким как продление сертификата подписи токена или разница часов:

Я реализовал множество успешных клиентов OAuth и всегда использовал эту технику – и избегал когда-либо читать поле expires_in в моем коде на стороне клиента

Источник

JSON Web Token и sliding expiration в web-приложении

В web-приложениях наиболее распространенным методом аутентификации до настоящего времени являлось использование файлов cookies, которые хранят идентификатор серверной сессии и имеют свой срок годности (expiration date). При этом существует возможность эту дату автоматически продлевать при очередном обращении пользователя на сервер. Такой подход носит название sliding expiration.

Сам JWT, также как и cookie, имеет свою дату ‘протухания’ (expiration date) и в простейшем случае используется следующим образом:

Подход с использованием refresh token довольно сильно усложняет, как клиентский, так и серверный код. При этом он требует хранить все refresh token-ы пользователей вместе с Client id и прочей дополнительной информацией.

В случае если же Вы хотите, чтобы пользователь бесконечно мог пользоваться ресурсом после входа, предлагается реализовать sliding expiration для токенов. То есть в простейшем (первом) случае при получении access token-а сервер при приближении к expiration date (или же каждый раз) отправляет пользователю новый access token со сдвинутой датой. Такой подход в случае кражи токена, приводит к тому, что злоумышленник бесконечно может пользоваться ресурсом.

Во втором случае производится то же самое, но только для refresh token-а.

Вот собственно все подходы, которые мне удалось найти. Я же в свою очередь хотел бы ограничиться для простоты только одним access token-ом, но при этом иметь sliding expiration и возможность менять права и ограничивать в доступе токен, в случае его кражи.

Для этого я бы добавил в токен новое поле RefreshDate (дату после которой токен требуется обновить; должна быть меньше, чем expiration date, если она указана) и в базу данных в таблицу пользователей только одно поле — MinRefreshDate. Это поле должно хранить минимальную дату RefreshDate, которая валидна для пользователя. При этом для обновлении токена MinRefreshDate должна быть непустой и всегда должна быть меньше, чем RefreshDate самого токена, который требуется обновить.

При этом процесс использования выглядел бы примерно так:

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

Источник

Компьютерный перевод

Обучается переводу с помощью примеров, переведенных людьми.

English

Russian

Информация

English

Russian

Переводы пользователей

Добавлены профессиональными переводчиками и компаниями и на основе веб-страниц и открытых баз переводов.

Английский

Русский

Информация

Английский

the token has expired.

Русский

Указанный адрес электронной почты не найден.

Последнее обновление: 2020-09-04
Частота использования: 1
Качество:
Источник: Анонимно

Английский

Русский

Последнее обновление: 2013-09-29
Частота использования: 2
Качество:
Источник: Wikipedia

Английский

Русский

код добавления времени

Последнее обновление: 2015-05-14
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2015-05-14
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2015-05-14
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2015-05-14
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia
Предупреждение: Содержит скрытое HTML-форматирование

Английский

Русский

Просроченныйundefined key trust

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Срок действия истёк

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2014-12-09
Частота использования: 1
Качество:
Источник: Wikipedia
Предупреждение: Это сопоставление может быть неверным.
Удалите его, если считаете, что это так.

Английский

Русский

Последнее обновление: 2014-12-09
Частота использования: 1
Качество:
Источник: Wikipedia
Предупреждение: Это сопоставление может быть неверным.
Удалите его, если считаете, что это так.

Английский

Русский

Последнее обновление: 2014-12-09
Частота использования: 2
Качество:
Источник: Wikipedia
Предупреждение: Это сопоставление может быть неверным.
Удалите его, если считаете, что это так.

Английский

Русский

Последнее обновление: 2014-12-09
Частота использования: 2
Качество:
Источник: Wikipedia
Предупреждение: Это сопоставление может быть неверным.
Удалите его, если считаете, что это так.

Английский

Русский

Последнее обновление: 2018-02-21
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2011-10-23
Частота использования: 1
Качество:
Источник: Wikipedia

Английский

Русский

Последнее обновление: 2018-02-21
Частота использования: 1
Качество:
Источник: Wikipedia

Получите качественный перевод благодаря усилиям
4,401,923,520 пользователей

Сейчас пользователи ищут:

MyMemory — крупнейшая в мире память переводов. Она была создана на основе систем памяти переводов Европейского Союза, Организации Объединенных Наций и ведущих специализированных многоязычных сайтов из разных отраслей.

Мы относимся к Translated, так что, если вам нужны услуги профессионального перевода, посетите наш основной сайт.

Источник

Token, refresh token и создание асинхронной обертки для REST-запроса

token expired что значит. Смотреть фото token expired что значит. Смотреть картинку token expired что значит. Картинка про token expired что значит. Фото token expired что значитВ данном туториале мы кратко разберем, как реализовываются REST-запросы к API, требующие, чтобы пользователь был авторизован, и создадим асинхронную «обертку» для запроса, которая будет проверять авторизацию и своевременно ее обновлять.

Данные для авторизации

Сделав REST-запрос к api, куда мы отправили логин и пароль, в ответ мы получаем json следующего формата (значения взяты рандомные и строки обычно длиннее):

Полей в ответе может быть больше, например еще «token_type», «expires_on» и т. д., но, для данной реализации, нам нужны только три поля, приведенные выше.
Давайте их рассмотрим подробнее:

Получение токена

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

Хранить данные для авторизации мы будем в sessionStorage или localStorage, в зависимости от наших нужд. В первом случае данные хранятся до тех пор, пока пользователь не завершит сеанс или не закроет браузер, во втором случае данные в браузере будут храниться неограниченное время, пока по каким-либо причинам localStorage не будет очищен.

Функция для сохранения токена в sessionStorage:

Функция для получения токена:

Таким образом мы получили токен с полями «access_token», «refresh_token» и «expires_in» и сохранили его в sessionStorage для дальнейшего использования.

Обновление токена

Токен полученный нами ранее имеет ограниченное время жизни, которое задано в поле «expires_in». После того как его время жизни истечет, пользователь не сможет получить новые данные, отправляя данный токен в запросе, поэтому нужно получить новый токен.

Получить токен мы можем двумя способами: первый способ это заново авторизовавшись, отправив логин и пароль на сервер. Но это нам не подходит, т. к. заставлять пользователя каждый раз заново вводить данные авторизации по истечению какого-то отрезка времени — неправильно, это надо делать автоматически. Но хранить где-то в памяти пару логин/пароль для автоматической отправки небезопасно, именно для этого и нужен «refresh_token», который был получен ранее вместе с «access_token» и хранится в sessionStorage. Отправив данный токен на другой адрес, который предоставляет api, мы сможем получить в ответ новый «свежий» токен.

Функция для обновления токена

С помощью кода выше мы перезаписали токен в sessionStorage и теперь по новой можем отправлять запросы к api.

Создание функции-обертки

Теперь создадим функцию, которая будет добавлять данные для авторизации в шапку запроса, и при необходимости их автоматически обновлять перед совершением запроса.

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

Функция-обертка

С помощью кода выше мы создали функцию, которая будет добавлять токен к запросам в api. На эту функцию мы можем заменить fetch в нужных нам запросах, где требуется авторизация и для этого нам не потребуется менять синтаксис или добавлять в аргументы еще какие-либо данные.
Просто достаточно будет «импортнуть» ее в файл и заменить на нее стандартный fetch.

Источник

JWT (JSON Web Token) автоматическое продление срока действия

Я хотел бы реализовать аутентификацию на основе JWT в нашем новом REST API. Но так как срок действия установлен в токене, возможно ли автоматически продлить его? Я не хочу, чтобы пользователям приходилось регистрироваться через каждые X минут, если они активно использовали приложение в этот период. Это было бы огромным провалом UX.

Но продление срока действия создает новый токен (и старый действует до тех пор, пока не истечет срок его действия). И генерирование нового токена после каждого запроса звучит для меня глупо. Похоже, проблема безопасности, когда более одного токена действительны одновременно. Конечно, я могу аннулировать старый использованный, используя черный список, но мне нужно будет хранить токены. И одним из преимуществ JWT является отсутствие хранилища.

Я нашел, как Auth0 решил это. Они используют не только токен JWT, но и токен обновления: https://docs.auth0.com/refresh-token

Но опять же, чтобы реализовать это (без Auth0), мне нужно хранить токены обновления и поддерживать их срок действия. Какова реальная выгода тогда? Почему бы не иметь только один токен (не JWT) и сохранить срок действия на сервере?

Есть ли другие варианты? Разве использование JWT не подходит для этого сценария?

Я работаю в Auth0 и участвовал в разработке функции обновления токенов.

Все зависит от типа приложения, и вот наш рекомендуемый подход.

Веб-приложения

Хорошим примером является обновление токена до его истечения.

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

Для обновления токена вашему API требуется новая конечная точка, которая получает действительный, не истекший JWT и возвращает тот же подписанный JWT с новым полем срока действия. Тогда веб-приложение будет где-то хранить токен.

Мобильные / родные приложения

Большинство нативных приложений регистрируются один раз и только один раз.

Идея состоит в том, что токен обновления никогда не истекает, и его всегда можно обменять на действительный JWT.

Проблема с токеном, который никогда не истекает, состоит в том, что никогда не значит никогда. Что вы делаете, если вы потеряете свой телефон? Таким образом, пользователь должен каким-то образом идентифицировать его, а приложение должно предоставлять способ отзыва доступа. Мы решили использовать имя устройства, например, «maryo’s iPad». Затем пользователь может зайти в приложение и отозвать доступ к «iPad от maryo».

Другой подход заключается в отзыве токена обновления для определенных событий. Интересным событием является смена пароля.

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

В случае, если вы сами обрабатываете аутентификацию (т.е. не используете провайдера, такого как Auth0), может работать следующее:

Флаг ‘reauth’ в базе данных базы данных будет установлен, когда, например, пользователь сбросил свой пароль. Флаг удаляется, когда пользователь входит в следующий раз.

Кроме того, допустим, у вас есть политика, согласно которой пользователь должен входить в систему как минимум раз в 72 часа. В этом случае логика обновления токена API также проверит дату последнего входа пользователя в базу данных пользователя и запретит / разрешит обновление токена на этой основе.

Я возился при переносе наших приложений на HTML5 с RESTful apis в бэкэнде. Решение, которое я придумал, было:

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

Более сложная стратегия может быть реализована для удовлетворения бездействия пользователя (например, пренебрежение открытой вкладкой браузера). В этом случае возобновление вызова токена должно включать ожидаемое время истечения, которое не должно превышать установленное время сеанса. Приложение должно будет отслеживать последнее взаимодействие с пользователем соответственно.

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

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

При создании нового JWT закодируйте его jwt_version в полезную нагрузку JWT, дополнительно увеличивая значение заранее, если новый JWT должен заменить все остальные.

При проверке JWT jwt_version поле сравнивается с полем, user_id и авторизация предоставляется, только если оно совпадает.

Статья « Обновить токены: когда их использовать и как они взаимодействуют с JWT» дает хорошую идею для этого сценария. Некоторые моменты:

Также взгляните на auth0 / angular-jwt angularjs

Я фактически реализовал это в PHP, используя клиент Guzzle для создания клиентской библиотеки для API, но концепция должна работать для других платформ.

Обычно я выдаю два токена: короткий (5 минут) и длинный, срок действия которого истекает через неделю. Клиентская библиотека использует промежуточное программное обеспечение для попытки одного обновления короткого токена, если она получает ответ 401 на какой-либо запрос. Затем он снова попытается выполнить исходный запрос, и, если ему удалось обновить, он получит правильный ответ, прозрачно для пользователя. Если это не удалось, он просто отправит 401 пользователю.

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

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

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

Ниже приведены инструкции по отзыву вашего токена доступа JWT:

1) Когда вы входите в систему, отправьте 2 токена (токен доступа, токен обновления) в ответ клиенту.
2) У маркера доступа будет меньше время истечения, а у обновления будет долгое время истечения.
3) Клиент (Front end) будет хранить токен обновления в своем локальном хранилище и токен доступа в куки.
4) Клиент будет использовать токен доступа для вызова API. Но когда он истекает, выберите токен обновления из локального хранилища и вызовите сервер аутентификации api, чтобы получить новый токен.
5) На вашем сервере аутентификации будет открыт API, который примет токен обновления, проверит его действительность и вернет новый токен доступа.
6) Когда срок действия маркера обновления истечет, пользователь выйдет из системы.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, я также могу поделиться кодом (загрузка Java + Spring).

JWT-автообновление

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

Полный пример реализации

отказ от ответственности: я сопровождающий

Я решил эту проблему, добавив переменную в данные токена:

Если токен все еще действителен на основе expiredIn значения, но он уже превысил softexp значение, сервер ответит отдельным сообщением об этой ошибке, например. EXPIRED_TOKEN :

На стороне клиента, если он получил EXPIRED_TOKEN ответ, он должен автоматически обновить токен, отправив запрос на обновление на сервер. Это прозрачно для пользователя и автоматически заботится о клиентском приложении.

Метод обновления на сервере должен проверить, является ли токен все еще действительным:

Сервер откажется обновлять токены, если произошел сбой вышеуказанного метода.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *