У меня есть встроенное Spring-приложение Spring Security 3.0, подобное SSO, и внешнее приложение php, которое проходит проверку подлинности на моем SSO-сервере.Spring Security 3.0: запрос GET после аутентификации
Когда пользователь регистрируется в этом приложении, я хотел бы подтвердить его подлинность в приложении php.
Так что я сделал это:
....
public class CustomAuthenticationHandler extends SavedRequestAwareAuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws ServletException, IOException {
DefaultHttpClient httpclient = new DefaultHttpClient();
try {
HttpGet httpget = new HttpGet("http://localhost/phpapp/signin");
httpget.setHeader("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2");
httpget.setHeader("Connection", "keep-alive");
httpget.setHeader("Referer", "http://localhost:8080/;jsessionid="+request.getSession().getId());
httpget.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
httpget.setHeader("Accept-Language", "en-gb,en;q=0.5");
httpget.setHeader("Accept-Encoding", "gzip, deflate");
httpget.setHeader("Cookie", "JSESSIONID="+request.getSession().getId());
HttpResponse res = httpclient.execute(httpget);
} finally {
httpclient.getConnectionManager().shutdown();
}
}
}
в обработчике после аутентификации я создал запрос "GET" против зарегистрировались для PHP приложение. Когда он выполняется, возвращается в теле запроса «страница входа», как пользователь, не регистрируется. Примечание I:
httpget.setHeader("Referer", "http://localhost:8080/;jsessionid="+request.getSession().getId());
как текущий аутентифицированный jsessionid.
Но если я поместил ту же ссылку: http://localhost/phpapp/signin как обычно ссылку href на странице после аутентификации и щелкнуть ее, это нормально.
Любая идея, почему не работает такой же запрос в фильтре?