Можете ли вы обновить access_token после истечения срока его действия в spring security rest?

#grails #grails-4 #grails-spring-security

#grails #grails-4 #grails-spring-security

Вопрос:

Просматривая документацию, которую вам нужно ОПУБЛИКОВАТЬ в /oauth/access_token

 POST /myApp/oauth/access_token HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_tokenamp;refresh_token=eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00ifQ....
  

Этот пример не отправляет токен-носитель с запросом, но с grails 4.0.5 и spring-security-rest-3.0.1, когда я пытаюсь обновить токен, запрос отклоняется, если я не включу текущий токен-носитель.

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

Я использую следующую цепочку фильтров (прямо из документов)

         // stateless chain
        [
                pattern: '/**',
                filters: 'JOINED_FILTERS,-anonymousAuthenticationFilter,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter'
        ],
  

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

Существует ли какая-либо другая конфигурация, чтобы конечная точка «/ oauth / access_token» работала так же, как запрос «/ api / login»?

Комментарии:

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

2. Спасибо @TimBiegeleisen. Мне особенно интересно, как использовать токен обновления после истечения срока действия токена предъявителя. Из того, что я читал, вы должны иметь возможность сгенерировать новый с помощью токена обновления, даже если срок действия вашего токена на предъявителя истек. Я просто не могу заставить его работать на практике.

3. …токены обновления иногда тоже могут истекать. Итак, если это так, то они не будут работать, и вашему пользователю придется перенаправляться обратно для входа в систему.

4. правильно. У меня есть токен на предъявителя, срок действия которого истек, и токен обновления, который все еще действителен. используя grails spring security rest, я не могу получить новый токен, используя URL-адрес /oauth/access_token. По-видимому, для этого требуется токен предъявителя с истекшим сроком действия в заголовках.