本教程是我我的编写,花费几个小时的时间,给须要学习的人员学习使用,但愿能帮助到大家。java
【我的网站】:http://www.2b2b92b.com
【网站源码】:http://git.oschina.net/zhoubang85/zb
【支付-微信_支付宝_银联】技术QQ群:470414533
【技术论坛】:http://www.2b2b92b.cnmysql
【环境说明】:
本文演示过程在同一个机器上的,环境以下:git
windows7 64位web
jdk1.7.0_51sql
apache-tomcat-7.0.57-windows-x64数据库
cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jarapache
确保本地jdk环境已经搭建好windows
【软件说明】:
涉及到的一些jar,还有cas服务的war,因为CSDN上传文件最大只支持10M,但cas服务的war有20M左右。为了方便,已经将全部须要使用到的jar和war资源,打包放在了百度云盘,请自行下载。浏览器
https://pan.baidu.com/s/1hrY4BBmtomcat
根据演示需求,用修改hosts 文件的方法添加域名最简单方便(这个很是重要,由于CAS单点登陆系统是基于JAVA安全证书的 https 访问, 要使用CAS单点登陆必需要配置域名, cas是不能经过ip访问的.),编辑文件 C:\Windows\System32\drivers\etc\hosts 在文件末端添加下面三条信息:
127.0.0.1 server.zhoubang85.com 127.0.0.1 client1.zhoubang85.com 127.0.0.1 client2.zhoubang85.com
server.zhoubang85.com =>> 对应部署cas server的tomcat,这个虚拟域名还用于服务端证书生成
client1.zhoubang85.com =>> 对应部署client1客户端应用的tomcat
client2.zhoubang85.com =>> 对应部署client2客户端应用的tomcat
【注意】:上面3个ip都是127.0.0.1,这是为何呢?由于个人环境都是在同一台机器,因此ip都是一致的,咱们再把不一样的服务端和客户端应用,使用不一样域名加以区分。一个域名对应一个应用,模拟多端!
【因为CAS默认是基于HTTPS协议,因此须要配置服务端的tomcat,使之支持SSL安全协议访问】
【强烈说明】:初学者的话,建议配置成http协议访问,节省证书配置的繁琐步骤。
一、CAS固然也能够设置支持http访问,如何修改配置支持http,请自行百度,应该是修改二、3个配置文件就能够了。.
二、若是是初学者,我建议配置成http协议访问,由于https证书配置有很大可能性会出现问题,致使浪费不少时间精力。若是http配置完成,则直接跳到步骤——“3. 部署CAS-Server”继续搭建便可。
【安全证书配置】:
打开cmd命令窗口
生成证书,在cmd窗口输入如下命令:
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass zhoubang -validity 365 -keystore c:\zhoubang.keystore -storepass zhoubang
【说明】:-alias后面的别名能够自定义,-keypass指定证书密钥库的密码, -storepass和前面keypass密码相同,不然下面tomcat 配置https 会访问失败 -keystore指定证书的位置,这里指定放在c盘根目录,密钥库名称能够自定义,这里是zhoubang.keystore 3. 命令输入完成,回车以后,会提示你输入一些资料,见下图:
【注意】:第一个让你输入的“您的名字与姓氏是什么”,请必须输入在C:\Windows\System32\drivers\etc\hosts文件中加入的服务端的域名。
我这里也就是server.zhoubang85.com,为什么这么作?
首先cas只能经过域名来访问,不能经过ip访问,同时上方是生成证书,因此要求比较严格,因此若是不这么作的话,及时最终按照教程配置完成,cas也能够正常访问,访问一个客户端应用虽然能进入cas验证首页,可是,当输入信息正确后,cas在回调转入你想访问的客户端应用的时候,会出现No subject alternative names present错误异常信息,这个错误也就是在上面输入的第一个问题答案不是域名致使、或者与hosts文件配置的不一致致使。
4.导出证书:
在cmd窗口继续输入如下命令,导出证书:
keytool -export -alias ssodemo -keystore c:\zhoubang.keystore -file c:\ssodemo.crt -storepass zhoubang
【说明】:-alias后面的名称要与生成证书的命令里面的alias的名称一致. –keystore后面指定证书存放的位置,这里我放在C盘根目录,同时证书名称要与【生成证书】对应的命令里的keystore名称一致.这里是zhoubang.keystore,-file后面才crt路径,我也指定在c盘根目录. –storepass的证书密码要与上面输入的密码一致.
以下图所示:
咱们再看看c盘下面是否生成crt文件:
5.客户端导入证书
在cmd窗口输入命令:
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo
【说明】:-file指定证书的位置,也就是上一步导出证书的位置,即c:\ ssodemo.crt 命令中指定了JAVA_HOME,意思是将证书导入到客户端证书库,也就是jdk证书库中.由于客户端应用运行在本地,须要jdk的支持。
回车以后,会让你输入密钥库口令,注意,这里的密码必需要输入changeit,不能输入上面指定的密码zhoubang,切记,不然导入客户端证书会有问题,若是是多台机器演示,须要在每一台客户端导入该证书,步骤都是同样的。当看到提示“是否信任此证书”,输入y回车便可,见下图:(说明,命令中的-alias后面的别名能够自定义,若是出现【证书未导入,别名<***>已经存在】的错误,该意思是说客户端的密钥库中已经存在该别名证书了,从新指定其余别名便可.)
【注意项】:因为是本地没有证书,证书是本身生成的,因此,务必将生成的证书导入到jre的证书链中,否则是没法支持CAS认证服务的。
至此,CAS所需的证书环境,已经配置好。
下面,开始咱们的CAS服务、Tomcat、以及多客户端的配置及测试访问。
部署CAS-Server相关的Tomcat
配置HTTPS
解压apache-tomcat-7.0.57-windows-x64.zip,我本地路径为E:\apache-tomcat-7.0.57,编辑E:\apache-tomcat-7.0.57\conf\server.xml,找到下面片断:
<!-- <Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
去掉注释,修改为:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="C:/zhoubang.keystore" keystorePass="zhoubang" clientAuth="false" sslProtocol="TLS" />
其中,keystoreFile就是建立证书的路径,keystorePass就是建立证书的密码.
2. 验证HTTPS配置
其余按照默认配置不做修改,双击E:\apache-tomcat-7.0.57\bin \startup.bat 启动tomcat 验证https是否配置成功,我本地使用火狐浏览器访问,在地址栏输入
https://server.zhoubang85.com:8443/ 出现下面画面,其实这就代表cas服务端tomcat的https配置是没有问题了.
点击【我已充分了解可能的风险】,点击出现的【添加例外】—【确认安全例外】,,将会出现下面tomcat默认首页.tomcat已经支持https协议访问了,一切ok!
3. 部署CAS-Server
CAS-Server 下载地址: http://www.jasig.org/cas/download
本文以cas-server-webapp-4.0.0.rar为例,解压提取cas-server-webapp-4.0.0.war文件,把改文件copy到E:\apache-tomcat-7.0.57\webapps 目下,并重命名为:cas.war。
启动tomcat,在浏览器地址栏输入:https://server.zhoubang85.com:8443/cas ,回车,出现CAS服务端的登陆验证首页:
首页默认是英文的,点击红色框的连接,切换成中文显示。固然,并非全部的地方都会变成中文,这个不做讲解。
【说明】:此时,CAS只是单独运行,至于登陆的用户名和密码是什么,请查看:E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\deployerConfigContext.xml文件中有这样一段配置:
<bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entry key="casuser" value="Mellon"/>
</map>
</property>
</bean>
这个配置是默认静态配置用户名和密码,那就在浏览器的CAS服务的登录框中输入用户名casuser和密码Mellon,登陆看看效果,就会出现验证成功的页面,以下图。你也能够在文件中本身配置本身的用户名和密码。
看到上述页面表示CAS-Server已经部署成功。
用户名和密码确定须要和数据库进行交互验证的,,那么,如何配置呢?
【说明】:我本地使用的是mysql数据库。
一、须要将几个jar文件,放到CAS服务的lib目录下,我本地使用的jar版本分别是c3p0-0.9.1.2.jar、cas-server-support-jdbc-4.0.0.jar、mysql-connector-java-5.1.13-bin.jar,这3个缺一不可。将这3个jar放到E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\lib目录下。
二、修改配置,支持mysql数据库交互验证
编辑E:\apache-tomcat-7.0.57\webapps\cas\WEB-INF\ deployerConfigContext.xml文件,你会看到有这样一段配置:
注释掉第二个entry配置,最终配置以下:
<constructor-arg>
<map>
<entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
<!-- 注释这个-->
<!--<entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />-->
<!-- key-ref指定本身的本地数据库访问 -->
<entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver"/>
</map>
</constructor-arg>
上述配置截图:
而后再在这个xml中新加入2个bean配置,以下:
<!-- 指定c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property ame="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/myProject?useUnicode=true&characterEncoding=UTF-8" />
<property name="user" value="root" />
<property name="password" value="root" /> </bean> <!-- 访问本地数据库 --> <bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler" p:dataSource-ref="dataSource" p:sql="SELECT u.`password` FROM `sec_user` u WHERE u.`account` = ?" />
要说明的是,红色标注的内容,我想你们都能看的明白,就是指定数据库驱动和链接信息。其中,sql语句的意思就是,根据用户名获取密码,CAS会根据你页面输入的用户名获取该用户密码,和你输入的密码进行校验,来判断输入是否正确。
其中,sql中的表换成你本身本地的表便可,或者本身手动新建一个表,加入几条测试数据便可。只要根据用户名查询密码便可。
上述配置截图:
至此,CAS与数据库交互验证的配置已经配置完成,你能够从新访问cas,输入数据库中存在的用户名和密码,来看看效果如何~若是登陆成功,说明配置无误。不然,请耐心检查配置是否有问题,jar包是否缺乏。
如今,CAS已经支持数据库交互验证了,服务端tomcat也支持HTTPS协议访问,如今,咱们来搭建客户端,实现多个客户端的单点登陆。这里,我本地只使用2个tomcat客户端来测试,其实已经知足单点登陆的要求了,至少2个应用。
4. 部署CAS客户端相关的Tomcat
首先,客户端应用是要和CAS服务端进行交互的,因此这里须要jar文件,放在客户端应用的lib目录下。分别是:cas-client-core-3.2.1.jar、commons-logging.jar
这里呢,我就直接使用tomcat默认自带的 webapps\examples 做为演示的简单web项目。我就不去另写一个web测试的demo了。
既然须要2个客户端应用,则须要2个tomcat作为客户端服务器,因此,我本地解压了2份tomcat,做为客户端服务器,并从新命名,本地路径分别为:E:\apache-tomcat-7.0.57-client1和E:\apache-tomcat-7.0.57-client2
首先,将上面2个jar分别放到E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\lib目录
和E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\lib目录。
配置apache-tomcat-7.0.57-client1客户端1:
修改tomcat的启动端口:
编辑E:\apache-tomcat-7.0.57-client1\conf\server.xml文件,找到以下2处内容:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
这里请将port="8080"修改为其余4位端口,不能和CAS服务端的tomcat相同,不然,在同一台机器上测试会出现端口占用的错误,我修改为18080,若是是在不一样的机器上,则不须要配置这些。
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
这里请将port="8009"修改为其余4位端口,不能和CAS服务端相同.我修改为18009
好,启动这个tomcat,即运行E:\apache-tomcat-7.0.57-client1\bin\startup.bat,若是启动窗口中没有出现错误,说明端口配置无误。请记住你配置的端口号。
浏览器输入 http://client1.zhoubang85.com:18080/examples/servlets/,请注意红色部分域名,就是教程一开始须要配置的C:\Windows\System32\drivers\etc\hosts的域名,用于不一样的客户端域名访问,回车:
好,启动这个tomcat,即运行E:\apache-tomcat-7.0.57-client1\bin\startup.bat ,若是启动窗口中没有出现错误,说明端口配置无误。请记住你配置的端口号。
浏览器输入 http://client1.zhoubang85.com:18080/examples/servlets/, 请注意红色部分域名,就是教程一开始须要配置的 C:\Windows\System32\drivers\etc\hosts 的域名,用于不一样的客户端域名访问,回车:
看到上述界面表示apache-tomcat-7.0.57-client1的基本安装配置已经成功。
接下来须要配置最重要的内容,让客户端应用和CAS服务链接:
编辑E:\apache-tomcat-7.0.57-client1\webapps\examples\WEB-INF\web.xml,在最下面加入以下配置:
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- 该过滤器用于实现单点登出功能,可选配置 -->
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://server.zhoubang85.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://client1.zhoubang85.com:18080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责对Ticket的校验工做,必须启用它 -->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class> org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://server.zhoubang85.com:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://client1.zhoubang85.com:18080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责实现HttpServletRequest请求的包裹,好比容许开发者经过HttpServletRequest的getRemoteUser()方法得到SSO登陆用户的登陆名,可选配置。 -->
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器使得开发者能够经过org.jasig.cas.client.util.AssertionHolder来获取用户的登陆名。好比AssertionHolder.getAssertion().getPrincipal().getName()。 -->
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置完成后,启动CAS服务端tomcat,再启动该客户端1的tomcat,在浏览器访问:
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
看看是否跳转到了CAS认证界面,回车以后,会出现以下图:
认证观察会发现浏览器的地址栏中(我用的是火狐浏览器),URL信息是这样的:
https://server.zhoubang85.com:8443/cas/login?service=http%3A%2F%2Fclient1.zhoubang85.com%3A18080%2Fexamples%2Fservlets%2Fservlet%2FHelloWorldExample
我想你已经知道什么意思了,因为你没有登陆CAS认证系统,CAS认证系统拦截到你访问的客户端应用,首先进入到认证系统登陆界面,同时URL后面加上你想访问的地址信息,当你登陆成功后,CAS服务会转向到你刚刚访问的地址,也就是:
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
转向到这个地址以后,浏览器会显示以下内容:
上面这个内容,显示的就是你访问tomcat中的examples项目的一个servlet的返回结果。
这里,若是你够细心的话,你会发现浏览器地址栏又多了一个内容,即多了一个jsessionid参数,这个就是CAS认证的原理所在,使用的是COOKIE机制。这里就很少说了。
配置apache-tomcat-7.0.57-client2客户端2
配置与上面的客户端配置步骤相同,其中须要注意的就是,这第二个客户端的tomcat端口要与上面的客户端和CAS服务端的端口要不同,不然出现端口占用的错误。
主要配置以下:
Port修改为28080
Port修改为28009
修改编辑E:\apache-tomcat-7.0.57-client2\webapps\examples\WEB-INF\web.xml文件,加入的内容就是上面在第一个客户端的web.xml内容一致,只不过须要修改2处内容,就是几个url地址, 最终的配置以下:
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
<listener>
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>
<!-- 该过滤器用于实现单点登出功能,可选配置 -->
<filter>
<filter-name>CAS Single Sign Out Filter</filter-name>
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Single Sign Out Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://server.zhoubang85.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://client2.zhoubang85.com:28080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责对Ticket的校验工做,必须启用它 -->
<filter>
<filter-name>CAS Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value>https://server.zhoubang85.com:8443/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://client2.zhoubang85.com:28080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器负责实现HttpServletRequest请求的包裹,好比容许开发者经过HttpServletRequest的getRemoteUser()方法得到SSO登陆用户的登陆名,可选配置。 -->
<filter>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 该过滤器使得开发者能够经过org.jasig.cas.client.util.AssertionHolder来获取用户的登陆名。好比AssertionHolder.getAssertion().getPrincipal().getName()。 -->
<filter>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS Assertion Thread Local Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
测试验证SSO
至此,2个客户端也已经配置完毕,启动配置好的三个tomcat分别为:CAS服务端tomcat、2个客户端tomcat
我本地路径分别为:
服务端tomcat:E:\apache-tomcat-7.0.57
客户端1:E:\apache-tomcat-7.0.57-client1
客户端2:E:\apache-tomcat-7.0.57-client2
基本的测试
访问客户端1—-> 跳转到cas server 验证 —-> 显示客户端1的应用 —->新开选项卡访问客户端2 —-> 显示客户端2应用 —-> 注销cas server —-> 打开客户端1/客户端2 —-> 从新跳转到cas server 验证.
下面截图,根据上面所示进行测试,看看是否与上面说的流程一致:
首先,打开火狐浏览器,地址栏输入:
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
回车,将会出现CAS认证界面:
输入用户名和密码,登陆成功后,显示的界面:
从新打开一个选项卡,地址栏输入:
http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample
回车,将直接显示客户端2界面,没有从新登陆,浏览器显示界面:
根据上面显示的界面,按照普通想逻辑,当访问客户端2的时候,应该会被CAS拦截,转到CAS认证服务的界面,可是结果却直接显示客户端2的界面,缘由就是由于你在访问客户端1的时候已经登陆认证过了,CAS会在你浏览器中注入COOKIE,记录你的认证凭证,若是你的浏览器没有关闭或者退出的话,当你访问客户端2应用的时候,CAS检测到认证的凭证,因此,就直接显示了客户端2的界面,大概的认证处理流程就是这样了,我这里说的比较浅显,其实CAS仍是有不少更加复杂的操做在里面的,有兴趣的朋友本身慢慢研究吧。
这里,其实就已经说明,CAS单点登陆系统已经搭建完毕!运行一切正常!
下面,咱们新打开一个选项卡(也可在当前页面的地址栏输入),在浏览器地址栏中输入
https://server.zhoubang85.com:8443/cas/logout
回车显示:
上述表示 认证注销成功,此时若是再访问 :
http://client1.zhoubang85.com:18080/examples/servlets/servlet/HelloWorldExample
或
http://client2.zhoubang85.com:28080/examples/servlets/servlet/HelloWorldExample
都将会跳转到CAS服务从新进行认证。
【异常错误总结】:
一、若是中途出现了如下异常错误:sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
缘由分析:其实缘由就是,你在上面的第5步进行证书导入到jre证书链的时候(具体命令以下:keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ssodemo.crt -alias ssodemo),ssodemo.crt路径不对致使,检查下下c:\ssodemo.crt否有空格,或者回想下是否执行了这个步骤。
到此,SSO之CAS单点登陆系统已经搭建完毕!
这里我借鉴一篇文章,提供你们学习:
http://www.micmiu.com/enterprise-app/sso/sso-cas-sample/
固然,CAS认证以后,至于在后台如何获取到登陆的用户信息,这里我就不做描述了。上面分享的文章最后有相应的讲解。其余的知识,本身慢慢学习和研究吧。