Единый вход CAS с несколькими веб-приложениями

#java #single-sign-on #cas

#java #единый вход #cas

Вопрос:

Я потратил последний день или около того на поиски в CAS, и мне удалось заставить сервер работать с простым тестовым приложением. Когда я захожу в защищенную область, я перенаправляюсь на страницу входа — когда я вхожу в систему, я возвращаюсь на свою предыдущую страницу.

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

Однако на самом деле это не работает. Я должен войти на сайт клиента B независимо от того, зарегистрирован я на сайте клиента A или нет.

CAS работает на Tomcat, клиент A и B — это один и тот же проект, развернутый как отдельные wars в одном экземпляре JBoss AS 6.

Есть идеи, как я могу добиться предлагаемого поведения?

РЕДАКТИРОВАТЬ: Да, оба используют CAS. Проблема в том, что, похоже, он не распознает, что пользователь уже вошел в систему. Это похоже на то, что CAS не может определить, существует ли «ссылка» между двумя службами и что, когда одна служба была аутентифицирована, другая служба должна быть автоматически аутентифицирована.

Я должен отметить, что на данном этапе я не использую SSL в приложении. Я сосредоточен на том, чтобы запустить простой пример использования HTTP, прежде чем рассматривать внедрение SSL.

Ответ №1:

Оба ваших приложения должны быть настроены на использование сервера CAS для аутентификации. Обычная процедура заключается в том, что приложение A перенаправляет вас на страницу входа в CAS, позволяет вам войти в систему и перенаправляет вас обратно на A. Если вы затем попытаетесь войти в B, он проверяет с сервером CAs, вошли ли вы уже в систему, и, если да, отправляет обратно информацию о вошедшем в систему пользователе.

Опять же, оба ваших приложения должны поддерживать CAS в качестве механизма входа в систему, в чем я не уверен из вашего описания.

Подробное описание протокола CAS можно найти здесь.

Комментарии:

1. Что касается SSL: по умолчанию CAS полагается на наличие действительного сертификата для передачи своих токенов. Что говорят вам журналы приложений (а также CAS)? Если проблема с SSL, в их.

Ответ №2:

CAS работал без SSL, поскольку он приводил вас на сайт входа в систему и правильно аутентифицировал вас. Проблема заключалась в том, что если вы попытаетесь получить доступ через другой сайт, вам будет предложено выполнить повторный вход.

Как только я включил SSL и попробовал его, он работал правильно. После входа в клиент A вы автоматически аутентифицируетесь в клиенте B. Я потратил некоторое время на wiki, и хотя там говорилось о важности использования SSL, я не помню, чтобы там явно указывалось, что единый вход не будет работать без включенного SSL. Возможно, следует добавить предупреждение в wiki?

Ответ №3:

Если вы хотите сосредоточиться на своих приложениях и упростить себе жизнь, воспользуйтесь облачным провайдером для сервера CAS: http://www.casinthecloud.com (для тестирования доступны бесплатные серверы).