单点登陆 single sign on(sso)
自动登录:
用户在通过浏览器登录某一站点后,在以后的规定时间内访问该站点将自动完成登
录。
通过cookie的方式将客记信息保存在客户机上
在android应用中也可以采取此种方式,在发起http请求的时候带cookie信息
自动登录的实现原理:
在相同域名的情况下:
采用cookie的方式 domain=域名
在不同域名的情况下:
中央认证服务器:
cas(centrol authentication service)
服务器端下载地址:http://downloads.jasig.org/cas/
客户端下载地址:http://www.jasig.org/cas/download
使用keytool创建证书:
keytool -genkey -alias test-keyalg RSA -keystore d:/keys/testkey
域名: 可以在C:\WINDOWS\system32\drivers\etc\host文件中添加
127.0.0.1 cn.yue.com
导出证书:
keytool -export -file d:/keys/test.crt -alias test -keystore d:/keys/testkey
为客户端的JVM导入证书
keytool -import -keystore C:\Java\jdk1.6.0_10\jre\lib\security\cacerts -file D:/keys/test.crt -alias test
C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore
如果提示:
keytool工具java.io.IOException: Keystore was tampered with, or password was incorrect 异常的解决办法
可以输入:changeit这处密码
方式二生成证书文件;
keytool -genkey -alias tomcat -keyalg RSA -keystore C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore
应用证书到web服务器:
<Connector port="8443" protocol="HTTP/1.1" sslenabled="true"
maxthreads="150" scheme="https" secure="true"
clientauth="false" sslprotocol="TLS"
keystorefile="C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore" keystorepass="密码" />
下面是服务器的配置:
F:\小工具\java web\单点登陆\cas-server-3.5.0-release\cas-server-3.5.0\modules目录下的
cas-server-webapp-3.5.0.war文件放到tomcat\webapps下
用浏览器访问
https://cn.yue.com:8443/cas/login
默认密码:andmin/admin
读取数据库信息验证
修改:deployerConfigContext.xml
在目录:C:\Java\apache-tomcat-6.0.35\webapps\cas\WEB-INF
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
以上语句只是简单的检查用户名和密码
修改为:
<!-- QueryDatabaseAuthenticationHandler提供一个查询接口-->
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<propertyname="dataSource" ref="dataSource"></property>
<propertyname="sql" value="select password from test_user where login_name=?"></property>
<propertyname="passwordEncoder" ref="MD5PasswordEncoder"></property>
</bean>
在最后添加:
<!-- add dataSource -->
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<propertyname="url"><value>jdbc:mysql:///test</value></property>
<propertyname="username"><value>root</value></property>
<propertyname="password"><value>root</value></property>
</bean>
<bean id="MD5PasswordEncoder"class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-argindex="0">
<value>MD5</value>
</constructor-arg>
</bean>
添加cas-server-support-jdbc-3.5.0.jar和mysql驱动包到C:\Java\apache-tomcat-6.0.35\webapps\cas\WEB-INF\lib
创建用户表
CREATE TABLE `test_user` (
`id` bigint(20) NOT NULL auto_increment,
`email` varchar(255) default NULL,
`login_name` varchar(255) NOT NULL,
`name` varchar(255) default NULL,
`password` varchar(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `login_name` (`login_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8