Закончен период действия токена обновления бизнес сети

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

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

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

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

Виды авторизации: сессии, JWT-токены. Для чего нужны сессии? Как работает JWT? (+ разбор ошибки)

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

автор: cchamberlain

9 ответов

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

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

web-приложений

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

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

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

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

большинство родных приложений войти один раз и только один раз.

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

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

Читайте также:  Кофейня в бизнес центре плюсы и минусы

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

Как указать срок жизни токенов обновления в Keycloak

Время жизни токена обновления Keycloak составляет 1800 секунд:

Как указать разный срок действия? В пользовательском интерфейсе администратора Keycloak можно указать только срок жизни токена доступа:

Onecli. Любой бизнес создаётся для получения прибыли. Onecli. — не исключение!

enter image description here

rok 27 Авг 2018 в 16:15

4 ответа

Лучший ответ

Время жизни токена обновления контролируется настройкой простоя сеанса единого входа. 30 минут = 30 * 60 = 1800 секунд (значение refresh_expires_in)

Erik Tribou 14 Фев 2019 в 00:38

На самом деле все намного сложнее. Между каждым полем существует множество взаимосвязей, и вы можете переопределить его в 3 разных местах .. Чтобы было понятно, Keycloak — это ад. Но мне пришлось установить Client Session Idle на 0, Client Session Max на 0, SSO Session Idle на 999 дней. После этого я могу управлять таймаутом токена доступа с помощью Access Token Lifespan и обновлять тайм-аут токена с помощью SSO Session Max . Мне потребовался 1 час игры со всеми переменными. SSO Session Idle или Access Token Lifespan будут приняты в зависимости от того, какое время меньше

Kuba Šimonovský
3 Сен 2020 в 16:44
Проблема с установкой SSO Session Idle на 999, вы теряете простаивающую функцию в основном
dreamcrash
20 Май 2021 в 19:16

Я установил Client Session Idle на 0, Client Session Max на 0 и SSO Session Idle на 12 часов, но все равно сеанс ожидания истекает через 30 минут. Что еще требуется?

Shashank Shekher
22 Июн 2021 в 07:24
Jalaj Chawla
30 Июл 2021 в 10:34

В последней версии, на момент написания 15.0.2, значение refresh_expires_in оставалось равным 0. Чтобы это исправить, мне пришлось переключить переключатель Offline Session Max Limited в положение «Вкл.».

10 Дек 2021 в 14:38

В v11.0.3 в расширенных настройках клиента отсутствуют настройки ожидания сеанса единого входа (не уверен, что они были только что переименованы, перемещены или являются настройками области, доступными где-либо еще в интерфейсе администратора), поэтому начиная с клиента по умолчанию вы можете указать максимальное значение сеанса клиента, чтобы контролировать время жизни токена обновления без необходимости изменять другие параметры продолжительности (время жизни токена доступа продолжается, как и следовало ожидать). Доказательства: настройка параметров и проверка ответа refresh_expires.

hairycoo 12 Дек 2020 в 21:28

Срок службы токенов обновления определяется параметром «Максимальное количество сеансов клиента» на вкладке «Токены» в настройках области.

Его также можно переопределить на уровне отдельных клиентов в меню «Дополнительные настройки» на странице настроек клиента.

Клиентская сессия Макс.

Максимальное время, по истечении которого токен обновления истечет и станет недействительным. Это позволяет указать более короткий тайм-аут токена обновления, чем тайм-аут сеанса. И его можно переопределить для отдельных клиентов. Это необязательная конфигурация, и если не установлено значение больше 0, используется тот же тайм-аут простоя, установленный в конфигурации SSO Session Max.

Jems 17 Май 2021 в 11:43

Читайте также:  Как определить уровень рентабельности бизнеса

На самом деле все намного сложнее.

TL; DR . Можно сделать вывод, что refresh token lifespan будет равняться наименьшему значению среди ( SSO Session Idle , Client Session Idle , SSO Session Max и Client Session Max ).

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

Предположим пока, что у нас есть только SSO Session Idle и SSO Session Max :

  • и SSO Session Max > SSO Session Idle в этом случае refresh token lifetime совпадает с SSO Session Idle . Почему? потому что, если приложение простаивает в течение SSO Session Idle времени, пользователь выходит из системы, и именно поэтому токен обновления привязан к этому значению. Каждый раз, когда приложение запрашивает новый токен, значения обратного отсчета refresh token lifetime и SSO Session Idle снова сбрасываются;
  • и SSO Session Max SSO Session Idle , то refresh token lifetime будет таким же, как SSO Session Max . Почему? потому что независимо от того, что делает пользователь ( т.е. бездействует или нет), пользователь выходит из системы по истечении времени SSO Session Max , и, следовательно, почему токен обновления привязан к этому значению.

Отсюда мы заключаем, что срок жизни токена обновления привязан к самому низкому из двух значений SSO Session Idle и SSO Session Max .

Оба эти значения относятся к системе единого входа (SSO). Нам по-прежнему необходимо учитывать значения полей Client Session Idle и Client Session Max в настройках области, которые, если НЕ установлены, совпадают с SSO Session Idle и SSO Session Max соответственно.

Если эти значения установлены в контексте токена обновления, они переопределят значения из SSO Session Idle и SSO Session Max , НО только если они ниже, чем значения из SSO Session Idle и SSO Session Max .

Давайте посмотрим на следующие примеры: SSO Session Idle = 1800 секунд, SSO Session Max = 10 часов и:

  1. Client Session Idle = 600 секунд и Client Session Max = 1 час. В этом случае refresh token lifespan совпадает с бездействием клиентского сеанса ;
  2. Client Session Idle = 600 секунд и Client Session Max = 60 секунд. В этом случае refresh token lifespan совпадает с Макс. Сеанса клиента .
  3. Client Session Idle = 1 день и Client Session Max = 10 дней. В этом случае refresh token lifespan совпадает с бездействием сеанса единого входа ;
Читайте также:  Сколько стоят квартиры бизнес класса

Короче говоря, вы можете сделать вывод, что refresh token lifespan будет равно наименьшему значению между ( SSO Session Idle , Client Session Idle , SSO Session Max и Client Session Max ).

Таким образом, утверждение из предыдущих ответов о том, что вы можете просто использовать Client Session Max для управления сроком жизни токена обновления, ЛОЖНО. Достаточно взглянуть на предыдущие примеры 1) и 3).

Наконец, поля Client Session Idle и Client Session Max из настроек области могут быть перезаписаны Client Session Idle и Client Session Max в самих клиентах, что повлияет на refresh token lifespan для именно этого клиента.

Применяется та же логика, но вместо того, чтобы рассматривать значения Client Session Idle и Client Session Max из настроек области, нужно учитывать значения из дополнительных настроек клиента.

Источник: question-it.com

Что такое токен? Что значит «истекло время жизни токена»?

Для безопасности каждый токен имеет ограниченный срок действия. Время от времени его заменяют новым, чтобы обезопасить владельца и его данные и имущество от взлома и вредоносных действий в интернете. Когда я открывала счет и создавала свой портфель ценных бумаг у брокера, сначала токен мне меняли на платной основе раз в год. Потом, после 3 лет сотрудничества, мне меняют его бесплатно. Без токена невозможно совершить ни одной сделки в торговом терминале, и поручения брокер не примет, даже на ввод собственных средств.

автор вопроса выбрал этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Julia­ 93 [10.8K]
5 лет назад

Токен — это ключ, строка или какой-либо шифр, используемый для авторизации (для подтверждения, что вы именно тот, за кого вы себя выдаёте). Токены достаточно широко используются в интернете в качестве дополнительного средства защиты от популярных атак (например, от CSRF). Как правило, токены передаются с помощью Cookies и действуют ограниченный промежуток времени, после которого попытка использовать токен приводит к ошибке (например, интернет-банк может попросить вас заново авторизоваться, или капча, введённая вами на давно открытой странице, не принимается, несмотря на правильный текст).

И даже здесь, на этой странице, используется токен :).

Источник: www.bolshoyvopros.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Бизнес для женщин