CAS SSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CAS SSO单点登录服务端客户端学习

1.了解单点登录

SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口.

SSO 的体系中有下面三种角色:

1) User(多个)

2) Web 应用(多个)

3) SSO 认证中心(一个)

2.SSO 实现包含以下三个原则

1) 所有的登录都在 SSO 认证中心进行。

2) SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是通过认证的用户.

3) SSO 认证中心和所有的 Web 应用建立一种信任关系.

3.了解单点登录体系结构

1) CAS Server 负责完成对用户信息的认证,需要单独部署,CAS Server 会处理用户名/密码 等凭证(Credentials).

2) CAS Client 部署在客户端,当有对本地 Web 应用受保护资源的访问请求,并且需要对请 求方进行身份认证,重定向到 CAS Server 进行认证.

4.CAS SSO单点登录可以不依赖于cookie跨域的解决方案

不依赖于cookie跨域是比较有优势的,假如我们在京东商城上登录一次,在京东商城上其实还有很多的站点,点击其他站点以后是直接可以使用而无需重新登录,我们可以很清楚的看到,里面的域名都是不一样的,如果用传统的方案可能会出现cookie跨域的问题,解决起来比较麻烦。

5.CAS SSO单点登录官网:

https://www.apereo.org/projects/cas

6.CAS 源代码*载下**地址

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

进入源码*载下**地址,当前的git库是正在维护的CAS,也是最新的CAS

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CAS最新版本可能存在不稳定的情况,所以这种*载下**方式我们也不建议使用,可以点击releases查看不同的版本,*载下**使用比较稳定的版本。

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

SSO CAS单点登录搭建详细步骤及源码

1.修改server.xml文件,如下:

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

注意: 这里使用的是https的认证方式,需要将这个配置放开,并做如下修改:

<Connector

port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

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

clientAuth="false" sslProtocol="TLS"

keystoreFile="D:/sso-cas/caskey/keycard"

keystorePass="minglisoft"

/>

注意: keystoreFile="D:/sso-cas/caskey/keycard" --证书了路径

 keystorePass="minglisoft" --证书密码

2.测试https的8443端口是否可以访问:https://localhost:8443

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

配置没有问题

3.可以配置只通过域名访问,还是修改server.xml文件,将localhost的配置修改为jeesz.cn如下:

<Host name="localhost" appBase="webapps"

 unpackWARs="true" autoDeploy="true">

<Host name="jeesz.cn" appBase="webapps"

 unpackWARs="true" autoDeploy="true">

重启tomcat容器,访问如下:http://jeesz.cn:8080

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

4.将cas-server-webapp-4.2.7.war包拷贝到tomcat容器中,并命名为cas.war如下:

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

5.重启启动tomcat容器,访问cas, https://jeesz.cn:8443/cas

默认用户名为:casuser

默认密码为:Mellon

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

以下是所有的cas sso单点登录交付件和源码

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CAS SSO单点登录服务端客户端实例

1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下:

2.进入目录C:\Windows\System32\drivers\etc

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

3.修改hosts文件

127.0.0.1 jeesz.cn

127.0.0.1 sso1.jeesz.cn

127.0.0.1 sso2.jeesz.cn

4.生成认证证书

注意:我们可以根据sso单点登录的架构图可以看到,在客户端和服务端进行交互的时候,是需要认证的,在这里我们使用jdk中的keytool方案生成证书(一般正式环境,使用正规机构颁发的证书,可以去购买)

(一)创建一个caskey目录,如:D:\sso-cas\caskey

(二)打开cmd的命令窗口:

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

(三)进入jdk bin的安装目录

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

(四)使用keytool -genkey -alias mycacerts -keyalg RSA -keystore D:/sso-cas/caskey/keycard 生成key

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

注意:输入相关信息用于生成证书. 其中名字与姓氏使用你的域名,保持和C:\Windows\System32\drivers\etc\hosts 文件中映射域名相同,注意不要写成IP。

在这里我使用的口令是minglisoft(这个要记住,后面还会使用到)

名字姓氏使用的是jeesz.cn(对应host中的域名配置)

(五)使用命令keytool -export -file D:/sso-cas/caskey/keycard.crt -alias mycacerts -keystore D:/sso-cas/caskey/keycard导出证书:

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

注意:口令为minglisoft

(六)将证书导入到 JDK 安装目录

Keytool -import -keystore C:/"Program Files"/Java/jdk1.8.0_131/jre/lib/security/cacerts -file D:/sso-cas/caskey/keycard.crt -alias mycacerts

备注:我已经帮忙生成了,最终要将cacerts拷贝到C:\Program Files\Java\jdk1.8.0_131\jre\lib\security目录即可

注意口令:minglisoft

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

CASSSO单点登录服务端客户端学习、搭建详细步骤及源码、实例

如果你也想在IT行业拿高薪,可以参加我们的训练营课程,选择最适合自己的课程学习,技术大牛亲授,7个月后,进入名企拿高薪。我们的课程内容有:Java工程化、高性能及分布式、高性能、深入浅出。高架构。性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点。如果你想拿高薪的,想学习的,想就业前景好的,想跟别人竞争能取得优势的,想进阿里面试但担心面试不过的,你都可以来,群号为: 454377428

注:加群要求

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

6.小号或者小白之类加群一律不给过,谢谢。

目标已经有了,下面就看行动了!记住:学习永远是自己的事情,你不学时间也不会多,你学了有时候却能够使用自己学到的知识换得更多自由自在的美好时光!时间是生命的基本组成部分,也是万物存在的根本尺度,我们的时间在那里我们的生活就在那里!我们价值也将在那里提升或消弭!Java程序员,加油吧