My cas version: 4.2.x cas-server-util.jar
【SimpleHttpClientFactoryBean.java】 @Override public boolean sendMessageToEndPoint(final HttpMessage message) { Assert.notNull(this.httpClient); try { final HttpPost request = new HttpPost(message.getUrl().toURI()); request.addHeader("Content-Type", message.getContentType()); final StringEntity entity = new StringEntity(message.getMessage(), ContentType.create(message.getContentType())); request.setEntity(entity); final ResponseHandler<Boolean> handler = new ResponseHandler<Boolean>() { @Override public Boolean handleResponse(final HttpResponse response) throws IOException { return response.getStatusLine().getStatusCode() == HttpStatus.SC_OK; } }; final HttpRequestFutureTask<Boolean> task = this.requestExecutorService.execute(request, HttpClientContext.create(), handler); if (message.isAsynchronous()) { return true; //【???while asynchronous,how and where judge logout request success in LogoutManagerImpl?????】 } return task.get(); } catch (final RejectedExecutionException e) { LOGGER.warn(e.getMessage(), e); return false; } catch (final Exception e) { LOGGER.debug(e.getMessage(), e); return false; } } cas-server-core-logout-4.2.7.jar 【LogoutManagerImpl.java】 private LogoutRequest handleLogoutForSloService(final SingleLogoutService singleLogoutService, final String ticketId) { if (!singleLogoutService.isLoggedOutAlready()) { final RegisteredService registeredService = servicesManager.findServiceBy(singleLogoutService); if (serviceSupportsSingleLogout(registeredService)) { final URL logoutUrl = determineLogoutUrl(registeredService, singleLogoutService); final DefaultLogoutRequest logoutRequest = new DefaultLogoutRequest(ticketId, singleLogoutService, logoutUrl); final LogoutType type = registeredService.getLogoutType() == null ? LogoutType.BACK_CHANNEL : registeredService.getLogoutType(); switch (type) { case BACK_CHANNEL: if (performBackChannelLogout(logoutRequest)) { // logoutRequest.setStatus(LogoutRequestStatus.SUCCESS); } else { logoutRequest.setStatus(LogoutRequestStatus.FAILURE); LOGGER.warn("Logout message not sent to [{}]; Continuing processing...", singleLogoutService.getId()); } break; default: logoutRequest.setStatus(LogoutRequestStatus.NOT_ATTEMPTED); break; } return logoutRequest; } } return null; } private boolean performBackChannelLogout(final LogoutRequest request) { try { final String logoutRequest = this.logoutMessageBuilder.create(request); final SingleLogoutService logoutService = request.getService(); logoutService.setLoggedOutAlready(true); LOGGER.debug("Sending logout request for: [{}]", logoutService.getId()); final LogoutHttpMessage msg = new LogoutHttpMessage(request.getLogoutUrl(), logoutRequest); LOGGER.debug("Prepared logout message to send is [{}]", msg); return this.httpClient.sendMessageToEndPoint(msg); // } catch (final Exception e) { LOGGER.error(e.getMessage(), e); } return false; } -- - Website: https://apereo.github.io/cas - Gitter Chatroom: https://gitter.im/apereo/cas - List Guidelines: https://goo.gl/1VRrw7 - Contributions: https://goo.gl/mh7qDG --- You received this message because you are subscribed to the Google Groups "CAS Community" group. To unsubscribe from this group and stop receiving emails from it, send an email to cas-user+unsubscr...@apereo.org. To view this discussion on the web visit https://groups.google.com/a/apereo.org/d/msgid/cas-user/4119ac5d-bb57-4610-b015-037b4fea9b71%40apereo.org.