Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > CAS & webapp


Автор: Ninken 30.5.2010, 21:21
Приветствую.

Воюю с касом который день и до сих пор не понял, что делает (должен делать) параметр фильтра org.jasig.cas.client.authentication.AuthenticationFilter в web.xml?

Код

<init-param>
            <param-name>service</param-name>
            <param-value>http://localhost:8080/auth</param-value>
</init-param>


Я мыслю так насчёт работы каса:

1) клиент через браузер посылает запрос ресурса (предполагается, что он ещё не прошёл аутентификацию)

2) фильтр каса ловит допустим все запросы к приложению

Код

<filter-mapping>
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>


 и перенаправляет их на свою логин страничку

3) пользователь вводит id и пароль и нажимает ввод

4) кас проверяет данные и в случае успеха: 
   а) генерит белиберду, называемую ticket'ом (если не ошибаюс service ticket - префикс st в урле, т.е билетик для запрашиваемого ресурса) 
   б) пытается сохранить куку, чтобы пользователь заново не проходил аутентификацию при запросе другого ресурса 
   в) перенаправляет пользователя по урлу, который запрашивался изначально (видимо фильтр его выцепляет из запроса и запоминает) + ticket 

А вот что происходит или должно происходить дальше я так и не смог уяснить...

Из этих источников:
http://www.jasig.org/cas/cas1-architecture
http://www.ibm.com/developerworks/web/library/wa-singlesign/

в которых всё как-то толи недосказано, толи не дорисовано... вобщем от такой документации я быстро косею

Я так понимаю, что должен быть некоторый сервлет, которому бы поступал урл (от кас фильтра?) с этим самым ticket (возможно ещё параметр service - запрашиваемый ресурс, который юзер хочет), затем он бы выцеплял этот ticket и запрашивал бы кас, чтобы тот проверил этот ticket (который кас недавно сам и сгенерил) с помощью фильтра org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
по такому урлу:

Код

<init-param>
    <param-name>casServerUrlPrefix</param-name>
    <param-value>https://localhost:8443/cas</param-value>
</init-param>
 

И в случае если в касе есть такой тикет, он ему ответит двумя строками типа yes username, мол, да, у меня есть такой тикет ассоциированный с таким вот юзером. И затем этот сервлет должен проанализировать эти строки и если, например, yes, то направить юзера на запрашиваемый ресурс уже без тикета в урле...

Вобщем в голове какой-то сумбур, здесь уже было одно обсуждение каса, надеюсь, что его участники откликнуться и помогут разобраться.
Сначала хотелось бы уяснить верную алгоритмику взаимодействия каса с веб-приложением, а затем понять нужно ли писать вышеописанный проверочный сервлет если да, то уяснить его алгоритмику работы. И функция параметра фильтра в самом начале поста совсем неясна (перенята из бывшей темы по касу)

Всем спасибо за внимание, извиняюсь за несколько сумбурное изложение, но если б понимал лучше - изложил бы чётче.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)