public void revoke(@FormParam("token") String token, @FormParam("token_type_hint") String tokenTypeHint,
HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException {
if (token == null) {
ServletUtils.applyHTTPResponse(new TokenErrorResponse(OAuth2Error.INVALID_GRANT).toHTTPResponse(),
servletResponse);
return;
}
ClientID clientId = null;
try {
ClientAuthentication clientAuth = ClientAuthentication.parse(FixedServletUtils.createHTTPRequest(servletRequest));
if (clientAuth != null) {
clientId = clientAuth.getClientID();
}
} catch (ParseException e) {
}
if ("login_session".equals(tokenTypeHint)) {
LoginSessionToken loginSessionToken = new LoginSessionToken(token);
tokenStore.remove(loginSessionToken);
tokenStore.invalidateLoginSession(loginSessionToken);
} else {
tokenStore.remove(token, clientId);
}
HTTPResponse httpResponse = new HTTPResponse(HTTPResponse.SC_OK);
httpResponse.setHeader("Content-Type", "text/plain");
httpResponse.setHeader("Pragma", "no-cache");
httpResponse.setHeader("Cache-Control", "no-store");
ServletUtils.applyHTTPResponse(httpResponse, servletResponse);
}