2011-07-19 2 views
3

Я попытался сделать SSO с веб-сервисами с помощью jasig CAS.WebServices SSO jasig CAS

Я использовал защиту для веб-приложений с использованием фильтров весны, но я не знаю, как это сделать с помощью веб-сервисов на стороне сервера.

ответ

1

Мы делаем это с помощью комбинации клиента (https://wiki.jasig.org/display/CASUM/RESTful+API) и CasLoginModule (https://wiki.jasig.org/display/CASC/CASLoginModule+for+JAAS+applications) через JAAS (https://wiki.jasig.org/display/CASUM/JAAS). Вот как это работает:

enter image description here

Клиент посылает имя пользователя и пароль для вашего веб-сервиса, который проверяет подлинность и проверяет это на сервере CAS. После этого CASLoginModule кэширует результирующий билет на обслуживание, так что для будущих запросов, которые могут предоставить билет на обслуживание, не нужно снова обращаться к CAS.

Это довольно длинный выход из «нормального» использования CAS, потому что по существу он делает билет обслуживания долговечным. Обычно ST должен длиться достаточно долго, чтобы результирующая служба проверила клиента. В моем случае я понял, что это не имеет большого значения, потому что все наше общение находится на стороне сервера за брандмауэром, но это может быть иным для вас.

+0

В моем случае клиент вызывается из веб-приложения, где пользователь уже зарегистрирован. Кас сделал билет. Возможно ли передать билет в веб-службу сервера и подтвердить его? – Wojciech

+0

Да, для этого мы создаем собственный безопасный файл cookie (требуется https) и передаем его клиенту веб-приложения, чтобы он мог вернуться к следующему запросу. CasLoginModule будет кэшировать билет на обслуживание, и поэтому проверка будет успешной. Также можно продлить срок действия сервисного билета в реестре билетов - см. Здесь: https://wiki.jasig.org/display/CASUM/Ticket+Expiration+Policy – bwobbones

+0

Можно передать его в заголовке SAML Assertion в МЫЛО? – Wojciech