首页 > 程序开发 > 软件开发 > 其他 >

单点登录技术总结

2017-01-04

1、前期准备 tomcat ,jdk,cas服务端,cas客户端 2、生成证书 (重新生成需要把以前的都删掉)keytool -genkey -alias lovez-keyalg RSA -keystore D: keys lovez ( 在这里定义了别名 lovez,下面会用到,前后一致,否则报错)

1、前期准备

tomcat ,jdk,cas服务端,cas客户端

2、生成证书 (重新生成需要把以前的都删掉)

keytool -genkey -alias lovez-keyalg RSA -keystore D:/keys/lovez ( 在这里定义了别名 lovez,下面会用到,前后一致,否则报错)

下面的姓氏要注意,是你的域名,

否则报错

java.security.cert.CertificateException: No name match

\

这里注意一下 "-alias"后边的第一个"colorb",这里只是一个别名,最后一个"colorb",指的是keysotre的名称。

其中名字与姓氏这一最好写你的 域名,如果在单击测试你可以在文件中映射一个虚拟域名:

\

3、导出证书

继续小黑窗,keytool -export -file d:/keys/colorb.crt -alias colorb -keystore d:/keys/lovez(此处的别名上面定义的)

4、把证书导入到客户端jdk

依旧是小黑窗,输入keytool -import -keystoreD:\Program Files\Java\jdk1.7.0_13\jre\lib\security\cacerts -file D:/keys/colorb.crt -alias colorb

上面方式报错

网上解决方案:再用cd进入到C:\jdk1.5\jre\lib\security这个目录下

    敲入如下命令回车执行

keytool -import -alias cacerts -keystore cacerts-file D:/keys/colorb.crt -alias lovez(如果security存在cacerts删掉,否则报错,)

5、安装服务端

1、部署war包

我们把下载下来的CAS Service解压后,到cas-server-3.3\modules目录,找到cas-server-webapp-3.3.war,把war包放到tomcat的%TOMCAT_HOME%\webapps下,当然,你最好改个名字,改啥都行,简单就好。

2、修改server.xml

接下来我们就要使用刚才生成的证书了,找到%TOMCAT_HOME%\conf\server.xml这个文件,打开并编辑之:

如果你的这个文件没改过的话,大概在80几行会找到以下注释

我们把它修改一下,换下

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/keys/colorb" truststoreFile="C:/Program Files/Java/jdk1.6.0_30/jre/lib/security/cacerts"

keystorePass="zw"/>

keystoreFile就是刚才生成的keystore文件

truststoreFile就是书嘛,刚才已经安装到jre里

keystorePass密码

3、访问服务端

好了,配置好了之后,可以访问http://lovez:8443/cas,注意cas就是刚才刚的那个war包名字。

\

账号密码在配置文件

\


配置客户端

1、添加依赖

解压刚才下好的CAS Client包,里面会有cas-client-core-x.x.x.jar,不过还需要commons-logging-1.1.jar和servlet-api-2.3.jar,如果你觉得麻烦,直接用maven添加依赖吧,我就是那么做的:

org.jasig.cas.client

cas-client-core

3.1.12

2、配置web.xml

接下来就是要配置web.xml啦,主要是配置过滤器。

CAS Web Application Demo

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

CAS Single Sign Out Filter

org.jasig.cas.client.session.SingleSignOutFilter

CAS Single Sign Out Filter

/*

CASFilter

org.jasig.cas.client.authentication.AuthenticationFilter

casServerLoginUrl

https://colorb:8443/cas/login

serverName

http://colorb:8888

CAS Validation Filter

org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

casServerUrlPrefix

https://colorb:8443/cas

serverName

http://colorb:8888

CAS Validation Filter

/*

CAS HttpServletRequest Wrapper Filter

org.jasig.cas.client.util.HttpServletRequestWrapperFilter

CAS HttpServletRequest Wrapper Filter

/*

CAS Assertion Thread Local Filter

org.jasig.cas.client.util.AssertionThreadLocalFilter

CAS Assertion Thread Local Filter

/*

好了,第一个客户端配置好了,接下来以同样的方式,配置第二个客户端,不过web.xml稍微有一点点不同的就是上边标黄的地址里的color换成color2,其实就是代表两个不同的域名嘛。注意上边标红的地址,它们都是指向同一个地址,即CAS服务端的地址,因为客户端访问的服务器是同一个的。

按如上配置,一般就成功了,如果你访问出错的话,证明你的客户端web.xml没有配置好,或者你的证书生成有问题,多加注意就好,我也错了不少次!

我配置的简单版



    
        CAS Authentication Filter
        org.jasig.cas.client.authentication.AuthenticationFilter
        
            casServerLoginUrl
            https://lovez:8443/cas/login
        
        
            serverName
            http://lovez:8080/client
        
    

    
        CAS Validation Filter
        org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
        
            casServerUrlPrefix
            https://lovez:8443/cas
        
        
            serverName
            http://lovez:8080/client
        
	

    
        CAS HttpServletRequest Wrapper Filter
        org.jasig.cas.client.util.HttpServletRequestWrapperFilter
    

    
        CAS Validation Filter
        /*
    

    
        CAS Authentication Filter
        /*
    

    
        CAS HttpServletRequest Wrapper Filter
        /*
    

    
        
            index.jsp
        
    



最后测试

输入域名

http://lovez:8080/client/index.jsp

会跳到服务端登录界面

输入账号密码回到客户端。

登录成功图

\

相关文章
最新文章
热点推荐