单点登陆singlesignon(sso)
自动登录:
用户在通过浏览器登录某一站点后,在以后的规定时间内访问该站点将自动完成登
录。
通过cookie的方式将客记信息保存在客户机上
在android应用中也可以采取此种方式,在发起http请求的时候带cookie信息
自动登录的实现原理:
在相同域名的情况下:
采用cookie的方式domain=域名
在不同域名的情况下:
中央认证服务器:
cas(centrolauthenticationservice)
服务器端下载地址:http://downloads.jasig.org/cas/
客户端下载地址:http://www.jasig.org/cas/download
使用keytool创建证书:
keytool-genkey-aliastest-keyalgRSA-keystored:/keys/testkey
域名:可以在C:\WINDOWS\system32\drivers\etc\host文件中添加
127.0.0.1cn.yue.com
导出证书:
keytool-export-filed:/keys/test.crt-aliastest-keystored:/keys/testkey
为客户端的JVM导入证书
keytool-import-keystoreC:\Java\jdk1.6.0_10\jre\lib\security\cacerts-fileD:/keys/test.crt-aliastest
C:\Tomcat\GMAE3.0Tomcat\tomcat.keystore
如果提示:
keytool工具java.io.IOException:Keystorewastamperedwith,orpasswordwasincorrect异常的解决办法
可以输入:changeit这处密码
方式二生成证书文件;
keytool-genkey-aliastomcat-keyalgRSA-keystoreC:\Tomcat\GMAE3.0Tomcat\tomcat.keystore
应用证书到web服务器:
<Connectorport="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:\小工具\javaweb\单点登陆\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提供一个查询接口-->
<beanclass="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<propertyname="dataSource"ref="dataSource"></property>
<propertyname="sql"value="selectpasswordfromtest_userwherelogin_name=?"></property>
<propertyname="passwordEncoder"ref="MD5PasswordEncoder"></property>
</bean>
在最后添加:
<!--adddataSource-->
<beanid="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>
<beanid="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
创建用户表
CREATETABLE`test_user`(
`id`bigint(20)NOTNULLauto_increment,
`email`varchar(255)defaultNULL,
`login_name`varchar(255)NOTNULL,
`name`varchar(255)defaultNULL,
`password`varchar(255)defaultNULL,
PRIMARYKEY(`id`),
UNIQUEKEY`login_name`(`login_name`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8