Автоматический вход после регистрации в CAS - PullRequest
0 голосов
/ 27 марта 2010

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

Теперь я бы хотел, чтобы пользователь автоматически входил в систему после регистрации в качестве пользователя. Как этого добиться?

Ответы [ 2 ]

1 голос
/ 30 марта 2010

Приведенный выше комментарий неверен - клиенты CAS не имеют доступ к cookie-файлам, только CAS-сервер делает - CAS не протокол общего cookie.

Если у вас есть только один сайт, вы можете просто создать сеанс на клиенте, используя стандартные механизмы для Java, Ruby, независимо от используемой вами платформы.

Если вы хотите создать сеанс единого входа для входа в несколько приложений, в основном вам необходимо:

  1. Создание сеанса единого входа (через сервер CAS)
  2. Перенаправление на сервер CAS
  3. Переадресация пользователя обратно в ваше приложение.

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

0 голосов
/ 09 апреля 2010

Вот моя реализация. Идея заимствована из класса org.jasig.cas.web.flow.AuthenticationViaFormAction.

В моем веб-контроллере обрабатывается запрос на разблокировку, который часто поступает из регистрационного письма нового пользователя.

        String oneTimeAuthToken = this.userManager.generateOneTimeAuthToken(userEmail);
        UsernamePasswordCredentials credentials = new UsernamePasswordCredentials();
        credentials.setUsername(userEmail);
        credentials.setPassword(oneTimeAuthToken);
        String tgt = centralAuthenticationService.createTicketGrantingTicket(credentials);
        ticketGrantingTicketCookieGenerator.addCookie(request, response, tgt);
        log.debug("Current user was unlocked and logged in.");

Основой этого является создание временного токена, подобного паролю, для аутентификации. Конечно, userManager должен очищать этот токен автоматически после успешной аутентификации.

Надеюсь, это понятно. Дайте мне знать, если вы заметили что-то не так.

...