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 [email protected].
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.