У меня есть контроллер на основе @FrameworkEndpoint для реализации DELETE токена следующим образом
@FrameworkEndpoint
public class RevokeTokenEndpoint {
@Resource(name = "tokenServices")
ConsumerTokenServices tokenServices;
@RequestMapping(method = RequestMethod.DELETE, value = "/oauth/token")
@ResponseBody
public void revokeToken(HttpServletRequest request) {
String authorization = request.getHeader("Authorization");
if (authorization != null && authorization.contains("Bearer")) {
String tokenId = authorization.substring("Bearer".length() + 1);
System.out.println("tokenId : " + tokenId);
tokenServices.revokeToken(tokenId);
//tokenStore.removeRefreshToken(token);
}
}
}
Мой запрос - это DELETE (http://localhost:8081/oauth/token запрос с авторизационным каналом ce8b914d-57db-4ad7-86d9-be2d7f47b203
Проблема заключается в том, что конечная точка вообще не получает попадания, а возвращаемое сообщение является «неавторизованным». Когда я запускаю запрос с помощью Authorization Basic с client_id и secret, тогда он действительно поражаетконечная точка. Но тогда в этом случае я буду вынужден передать другой параметр или заголовок для переноса токена и изменить код, чтобы получить значение токена из этого другого параметра или заголовка.
Я полагаю, чтоидеальным способом было бы сказать Spring Security, чтобы разрешить несанкционированным вызовам удалять токен доступа. Имеет ли это смысл? и если да, то как?