Удалить access_token после выхода из системы в Spring Security Oauth2

#spring-security #spring-security-oauth2

#spring-безопасность #spring-security-oauth2

Вопрос:

У меня проблема с выходом из системы в Spring security и oauth2

Мы защищаем службы REST с помощью spring security OAuth2.Конечные точки токена и rest-api не имеют состояния и не нуждаются в сеансе.Мне нужна моя проверка подлинности только один раз, когда я вызываю службу выхода из системы в rest client, она показывает ответ 200, но не удаляет авторизацию.когда я ввожу имя пользователя и пароль, тот же пользователь должен входить в систему. но не выходить из системы. я также очистил контекст.

вот мой контроллер

 `@Path("oauth2/logout")
 public class LogoutImpl implements LogoutSuccessHandler{ 
 private TokenStore tokenStore;
 @Autowired
 public LogoutImpl(TokenStore tokenStore) {
     this.tokenStore = tokenStore;
 }
 public void setTokenStore(TokenStore tokenStore) {
  this.tokenStore = tokenStore;
 }
 @Override
 public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse  response, Authentication authentication)
   throws IOException, ServletException {
     removeaccess(request);
    SecurityContextHolder.clearContext();
    response.getOutputStream().write("ntYou Have Logged Out successfully.".getBytes());}
public void removeaccess(HttpServletRequest req) {
  String tokens = req.getHeader("Authorization");
 String value = tokens.substring(tokens.indexOf(" ")).trim();
  OAuth2AccessToken token = tokenStore.readAccessToken(value.split(" ")[0]);
  tokenStore.removeAccessToken(token);
  System.out.println("ntAccess Token Removed Successfully!!!!!!!!");
 }}
`  
  

Ответ №1:

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

Когда тот же токен используется клиентом в другом API и сервер анализирует токен, и если он находится в пределах срока действия и не поврежден, он будет подтвержден как TRUE.

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