Я пытаюсь выйти, отозвав access_token
следующим образом:
@FrameworkEndpoint
public class SecurityLogoutController {
@Autowired
private ConsumerTokenServices consumerTokenServices;
@DeleteMapping( "/oauth/token" )
public ResponseEntity<Void> logout( WebRequest request ) {
String bearer = "bearer";
String authorizationHeader = request.getHeader( HttpHeaders.AUTHORIZATION );
log.info( "authorization header: {}", authorizationHeader );
if ( authorizationHeader != null && StringUtils.containsIgnoreCase( authorizationHeader, bearer ) ) {
String accessTokenID = authorizationHeader.substring( bearer.length() + 1 );
log.info( "access_token: {}", accessTokenID );
consumerTokenServices.revokeToken( accessTokenID );
}
return ...;
}
}
Но каждый раз, когда я отправляю этот запрос на удаление почтальону, я получаю такой ответ:
{
"timestamp": "2018-05-30T01:09:11.710+0000",
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/oauth/token"
}
Конечная точка защищена Spring Security за сценой, и я не знаю, как и где эта конечная точка защищена.Что я не понимаю, так это то, почему клиент должен снова проходить аутентификацию, поскольку для получения access_token
он был аутентифицирован?Это кажется странным для меня.
Теперь, когда я проверяю подлинность клиента, Почтальон автоматически заменяет значение заголовка Authorization
и устанавливает его для обычной проверки подлинности.Что-то вроде: Basic Y2hpY293YS11aXNlcnZpY2U6Y2aXNlcnZpY2U=
Нужна помощь ... Спасибо