2014-03-21 4 views
1

У меня есть небольшой вопрос.Удалить access_token после выхода из системы

В настоящее время в моей конфигурации Spring используются функции DefaultTokenServices (предоставляемые функцией spring-security-oauth2-2.0.0.M3.jar). Правильно генерирует access_token.

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

В security.xml я настроил выход из системы в HTTP тег:

<sec:logout logout-url="/logout" logout-success-url="/auth" invalidate-session="true" delete-cookies="true" />

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

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

+0

Танк вас, Люк Тейлор. Мы используем маркер доступа oaut2 для идентификации пользователя, поэтому нам не нужно передавать каждый раз учетные данные пользователя (имя пользователя и пароль). И поэтому мы можем идентифицировать пользователя с маркером до выхода из системы или истечения времени токена. Я попробую решение для кода LogoutHandler. – java4fun

ответ

5

Срок службы access_token не зависит от сеанса входа пользователя, который предоставляет доступ клиенту. OAuth2 не имеет понятия входа пользователя или выхода из системы или сеанса, поэтому тот факт, что вы ожидаете, что выход из системы будет отменен, означало бы, что вы не понимаете, как работает OAuth2. Вероятно, вам следует уточнить в своем вопросе, почему вы хотите, чтобы все было так, и почему вам нужен OAuth.

Если вы действительно хотите этого поведения, тогда вам придется его самостоятельно закодировать (например, в специальной Spring Security LogoutHandler), но время жизни токена обычно определяется временем его истечения. Отменой токена обычно будет отдельный интерфейс, предоставляемый пользователю, позволяющий им преждевременно отменить доступ к своим ресурсам для одного или нескольких клиентов - что-то вроде third-party applications access Twitter.

0

В конце я следовал этому link

А в LogoutHandlerFilter я вызвать метод TokenService.revokeToken().

Смежные вопросы