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.

Reply via email to