#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.