Проблемы при реализации единого входа с расширением Spring Security CAS
Я пытаюсь использовать расширение Spring Security CAS для аутентификации пользователей в моих приложениях. Раньше было только одно приложение, поэтому SSO не было нужно. Теперь есть еще одно приложение, и я хочу, чтобы пользователь выполнил вход один раз и использовал все приложения без повторной аутентификации (в основном SSO). У меня есть куча таких вопросов -
- Все приложения, которые у меня есть, являются частью одного контейнера Tomcat и будут обслуживаться через один домен. Я проверил Tomcat SSO Valve, но, похоже, нужна аутентификация на основе контейнера, я не совсем уверен, хочу ли я использовать это для аутентификации / авторизации. Я использую Spring Security на основе формы входа в систему. Мне действительно нужно что-то вроде Jasig CAS или это будет перебор?
Spring Security и CAS deployerContext Configuration - http://pastie.org/8408976 и http://pastie.org/8408967
Я настроил Spring Security CAS с сервером Jasig, и SSO, кажется, работает, так как для доступа к другому приложению достаточно войти в любое из приложений. Я изменил файл deployerConfigContext.xml, чтобы заменить inMemoryServiceRegistryDaoImpl на JPA / Hibernate. Но я всегда вижу строку ниже в моих журналах. Хотя таблицы были созданы (SERVICETICKET и т. Д.) В моей БД. Эти таблицы всегда пустые, когда я пытаюсь войти и выйти.
2013-10-17 16:41:18,882 INFO [org.jasig.cas.services.DefaultServicesManagerImpl] - <Loaded 0 services.>
Когда я пытаюсь получить доступ к URL
https://localhost/cas/services
, он возвращает ошибку "Этот сайт имеет цикл перенаправления". и я вижу следующий фрагмент, повторяющийся n раз в журналах (с разными номерами билетов) - http://pastie.org/8408940У меня нет служб REST или служб без сохранения состояния, обращающихся к аутентифицированным ресурсам, мне вообще нужны прокси-билеты?
Примечание: я использую Spring Security 3.1.4.RELEASE и CAS версии 3.5.2 сервера. Любые указатели будут полезны.
1 ответ
I set up Spring Security CAS with Jasig server and SSO seems to work as logging in to any of the applications suffices to access the other application. I've modified the deployerConfigContext.xml to replace the inMemoryServiceRegistryDaoImpl with JPA / Hibernate one. But I always see the below line in my logs. Though the tables have been created (SERVICETICKET and so on) in my db. These tables are always empty when I try logging in and out.
When I try to access URL `https://localhost/cas/services`, it returns an error "This website has a redirect loop". and I see the
фрагмент ниже повторяется n раз в логах (с разными номерами билетов)
Я разобрался с решением этой проблемы. Это происходило из-за того, что filterProcessesUrl в конфигурации сервера CAS содержал строку "acegi" (старое имя для Spring Security), которая не совпадала с "spring", поэтому возникла проблема. Модификация, которая помогла. Не уверен, почему старое имя было там жестко закодировано. Кроме того, он не взял эту строку из cas.properties, поэтому выяснить это было немного сложнее.
Я надеюсь получить ответы на другие вопросы.