@Override public KeycloakUriBuilder getLogoutUrl() { return (this.logoutUrl != null) ? this.logoutUrl : delegate.getLogoutUrl(); }
private void logoutDesktop() throws IOException, URISyntaxException, InterruptedException { CallbackListener callback = new CallbackListener(); callback.start(); String redirectUri = "http://localhost:" + callback.server.getLocalPort(); String logoutUrl = deployment.getLogoutUrl() .queryParam(OAuth2Constants.REDIRECT_URI, redirectUri) .build().toString(); Desktop.getDesktop().browse(new URI(logoutUrl)); callback.join(); if (callback.errorException != null) { throw callback.errorException; } }
public static void invokeLogout(KeycloakDeployment deployment, String refreshToken) throws IOException, HttpFailure { HttpClient client = deployment.getClient(); URI uri = deployment.getLogoutUrl().clone().build(); List<NameValuePair> formparams = new ArrayList<>(); formparams.add(new BasicNameValuePair(OAuth2Constants.REFRESH_TOKEN, refreshToken)); HttpPost post = new HttpPost(uri); ClientCredentialsProviderUtils.setClientCredentials(deployment, post, formparams); UrlEncodedFormEntity form = new UrlEncodedFormEntity(formparams, "UTF-8"); post.setEntity(form); HttpResponse response = client.execute(post); int status = response.getStatusLine().getStatusCode(); HttpEntity entity = response.getEntity(); if (status != 204) { error(status, entity); } if (entity == null) { return; } InputStream is = entity.getContent(); if (is != null) is.close(); }
/** Helper for setting up GeoServer-style logout actions. */ @Override public void logout( HttpServletRequest request, HttpServletResponse response, Authentication authentication) { LOG.log(Level.FINER, "GeoServerKeycloakFilter.logout ENTRY"); // do some setup and get the deployment HttpFacade exchange = new SimpleHttpFacade(request, response); KeycloakDeployment deployment = keycloakContext.resolveDeployment(exchange); // redirect to referer url stripping all request parameters off String referer = request.getHeader(HttpHeaders.REFERER); String refererNoParams = referer.split("\\?")[0]; // let geoserver know what to do with this request.setAttribute( GeoServerLogoutFilter.LOGOUT_REDIRECT_ATTR, deployment .getLogoutUrl() .queryParam(OAuth2Constants.REDIRECT_URI, refererNoParams) .build() .toString()); }
if (refreshToken != null) { try { URI logoutUri = deployment.getLogoutUrl().clone().build(); HttpPost post = new HttpPost(logoutUri);