Восстановить исходный POST-запрос после аутентификации CAS?

#java #redirect #spring-security #single-sign-on #cas

#java #перенаправление #spring-безопасность #единый вход #cas

Вопрос:

У меня есть служба json-rpc, принимающая только http POST-req, и я хотел бы, чтобы она использовала CAS SSO auth. Текущий поток запросов выглядит примерно так:

 POST host/service/  -> 302 redirect 
GET host/cas/login?service=https:%2F/host/service%2F -> 302 redirect
GET host/service/?ticket=ST-16-0rtrEQunbcbNdP16Eu07-cas -> 302 redirect
GET host/service/  -> 405 GET Method not supported
  

Я полагаю, нам нужно преобразовать last GET в POST с сохранением исходных параметров тела сообщения.
Какие-нибудь намеки? Добавление простого RequestCacheAwareFilter в цепочку spring-sec не помогло.

Ответ №1:

Похоже, единственный способ решить проблему — избежать перенаправления на post. Таким образом, вам нужно сделать обычный GET (при обнаружении кода 405 в POST) на некоторый известный URL-адрес службы, принимающей GET, в том же веб-приложении для перенаправления в / из CAS, тогда вы можете безопасно использовать POSTs.