在CAS中注册后自动登录

时间:2010-03-27 17:00:15

标签: authentication cas

我正在建立自己的CAS。编写了一个身份验证处理程序,并对MySQL数据库进行了用户名/密码身份验证。我还添加了注册页面和相关逻辑。

现在我想让用户在注册为用户时自动登录。怎么做到这一点?

2 个答案:

答案 0 :(得分:1)

上面的评论不正确 - CAS客户端可以访问cookie,只有CAS服务器可以访问 - CAS 是共享cookie协议。

如果您只有一个站点,则可以使用Java,Ruby的标准机制,无论您正在使用的平台,在客户端上创建会话。

如果要创建用于登录多个应用程序的SSO会话,基本上您需要:

  1. 创建SSO会话(通过CAS服务器)
  2. 重定向到CAS服务器
  3. 让用户重定向回您的应用程序。
  4. 要完成第一个,您可能需要修改CAS LoginFlow以允许您通过一次性令牌或类似机制对用户进行身份验证。

答案 1 :(得分:0)

这是我的实施。这个想法是从类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就会自动清除此令牌。

希望这很清楚。如果你发现任何错误,请告诉我。