У меня есть два веб-приложения: Webapp A и Webapp B. Webapp A - это веб-приложение Spring 3.1. Веб-приложение B - это отдельное не весеннее веб-приложение. Оба защищены CAS. Моя цель - разрешить веб-приложению A использовать прокси-билет для получения информации из веб-приложения B.
Для упрощения я взял cas-пример, предоставленный Spring-Security, в качестве веб-приложения A. Образец по умолчанию, настроенный для использования моего локального cas-сервера, работает как положено. Для тех, кто не знаком с cas-sample, он предоставляет пример, использующий билет прокси-сервера для запроса другой страницы в приложении cas-sample. Затем я использую простую страницу в веб-сервере apache, защищенном с помощью mod_auth_cas для веб-приложения B. Опять же, веб-приложение B работает как положено. Когда я изменяю cas-sample для запроса webappB, используя прокси-билет, он не работает. Ответ на запрос webappB - страница входа в CAS. Примечание: я попробовал веб-приложение tomcat (не пружинное) для веб-приложения Б, с тем же результатом. Это заставляет меня поверить, что проблема не в веб-приложении B. Ниже приведен код, используемый для отправки запроса в веб-приложение B с использованием прокси-билета. А конфигурацию контекста безопасности можно посмотреть здесь .
final String targetUrl = "https://server/webappB";
final CasAuthenticationToken token = (CasAuthenticationToken) request.getUserPrincipal();
final String proxyTicket = token.getAssertion().getPrincipal().getProxyTicketFor(targetUrl);
final String serviceUrl = targetUrl+"?ticket="+URLEncoder.encode(proxyTicket, "UTF-8");
String proxyResponse = CommonUtils.getResponseFromServer(serviceUrl, "UTF-8");
Что я делаю не так? Почему это работает, если вышеупомянутый targetUrl находится в веб-приложении A, а не во внешнем приложении?
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ : Если это поможет, вот что отображается в журнале CAS при запросе к веб-приложению Страница, использующая билет прокси.
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Attempting to retrieve ticket [TGT-2-YX0RNVRDHAPyGLy6ymGGVucUSQyjtre4jvGrAxYk2hXsehsxqx-cas]
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Ticket [TGT-2-YX0RNVRDHAPyGLy6ymGGVucUSQyjtre4jvGrAxYk2hXsehsxqx-cas] found in registry.
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Added ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas] to registry.
[org.jasig.cas.CentralAuthenticationServiceImpl] - Granted proxy ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas] for service [https://server/webappB] for user [testUser]
[org.jasig.cas.web.support.CasArgumentExtractor] - Extractor generated service for: https://server/webappB
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Attempting to retrieve ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas]
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas] found in registry.
[org.jasig.cas.ticket.registry.DefaultTicketRegistry] - Removing ticket [ST-3-JrQKqqpZJz00a2hsGZP6-cas] from registry
[org.jasig.cas.web.support.CasArgumentExtractor] - Extractor generated service for: https://server/webappB
[org.jasig.cas.web.flow.InitialFlowSetupAction] - Placing service in FlowScope: https://server/webappB
[org.jasig.cas.web.flow.InitialFlowSetupAction] - Placing service in FlowScope: https://server/webappB
[org.jasig.cas.web.support.CasArgumentExtractor] - Extractor generated service for: https://server/webappB