Jasig CAS使用手札——一、了解Jasig CAS,简单运行!

Jasig CAS使用手札——一、了解Jasig CAS,简单运行!

博客分类: Java/Security
SSO XML Spring JDBC Eclipse 
SSO : 单点登录(Single Sign On , 简称 SSO )
CAS : CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架

有关CAS、SSO的详细信息我就不在这里罗嗦了,其实都是很简单理论,如果日后有时间,补充几张图,大家就很明白了~
今天要讨论的是了解 Jasig CAS这个成熟的系统,并让它能够运行。当然,如果要让它正式投入使用,还是需要一点时间的!
首先, 下载cas_server当前版本为3.4.2.1。
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第1张图片
然后,我们来了解下这个压缩包!
打开这个压缩包,真是物产丰富。
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第2张图片
我们先不关注其它内容,单看这个modules,单看modules中的cas-server-webapp-3.4.2.1.war
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第3张图片
我们从这里入手!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第4张图片
把cas-server-webapp-3.4.2.1.war当作是一般的应用就好,我们把它导入eclipse,当作是一个简单的应用!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第5张图片
这里众多的xml令人眼花缭乱,我们不必惊慌,除了web.xml外这里能起作用的只有 cas-servlet.xmldeployerConfigContext.xml!
我们需要做点什么?Nothing!即使我们不对这个系统进行任何改动,它仍旧可以运行!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第6张图片
输入用户名、密码试试登录试试?!不知道用户名?!没关系,就用最常用的admin:admin(用户名:密码)登录试试!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第7张图片
点击登录,看结果!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第8张图片
成功!!! 难道真的内置了这样的用户,正好被我蒙对了?!我可没有那么神奇!!!
再来个admin:manage试试!!!
Jasig CAS使用手札——一、了解Jasig CAS,简单运行!_第9张图片
注意控制台日志!
登录成功:
引用
2010-08-10 13:04:45,542 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] - SimpleTestUsernamePasswordAuthenticationHandler successfully authenticated the user which provided the following credentials: [username: admin]>

登录失败:
引用
2010-08-10 13:08:38,333 INFO [org.jasig.cas.authentication.AuthenticationManagerImpl] -


这个 SimpleTestUsernamePasswordAuthenticationHandler.java默认实现了用户名与密码一致时,成功登录!
看看 SimpleTestUsernamePasswordAuthenticationHandler.java的源代码就明白了!
Java代码   收藏代码
  1. public final class SimpleTestUsernamePasswordAuthenticationHandler extends  
  2.     AbstractUsernamePasswordAuthenticationHandler {  
  3.   
  4.     public SimpleTestUsernamePasswordAuthenticationHandler() {  
  5.         log  
  6.             .warn(this.getClass().getName()  
  7.                 + " is only to be used in a testing environment.  NEVER enable this in a production environment.");  
  8.     }  
  9.   
  10.     public boolean authenticateUsernamePasswordInternal(final UsernamePasswordCredentials credentials) {  
  11.         final String username = credentials.getUsername();  
  12.         final String password = credentials.getPassword();  
  13.   
  14.         if (StringUtils.hasText(username) && StringUtils.hasText(password)  
  15.             && username.equals(getPasswordEncoder().encode(password))) {  
  16.             log.debug("User [" + username + "] was successfully authenticated.");  
  17.             return true;  
  18.         }  
  19.   
  20.         log.debug("User [" + username + "] failed authentication");  
  21.   
  22.         return false;  
  23.     }  
  24. }  

这里
Java代码   收藏代码
  1. StringUtils.hasText(username) && StringUtils.hasText(password)  
  2.             && username.equals(getPasswordEncoder().encode(password))  

就是关键! 这个类是用于演示的!
打开deployerConfigContext.xml
Xml代码   收藏代码

你可能感兴趣的:(单点登录)