单点登录:英文名称(Single Sign On),简称sso,是目前比较流行的服务于企业业务整合的解决方案之一,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

然后,引用段话介绍一下cas特性(详见http://www.360doc.com/content/15/0204/17/21706453_446251626.shtml):

1) 开源的、多协议的SSO解决方案,CAS Server和CAS Client通信支持多协议,如:CAS、Oauth、OpenID、SAML1.1、SAML2.0D等。

2) 支持多种认证机制:Active Directory、JAAS、JDBC、LDAP、X.509 Certificates等。

3) 安全策略:使用票据(Ticket)来实现支持的认证协议;

4) 支持多种客户端:Java、.Net、PHP、Perl、Apache、 uPortal等。

5) 支持授权:可以决定哪些服务可以请求和验证服务票据(Service Ticket)。

6)  提供高可用性:通过把认证过的状态数据存储在TicketRegistry组件中,这些组件有很多支持分布式环境的实现。

CAS包含CAS Server和CAS Client两个部分。下面我们看一看他的运行原理,首先借用一张cas常用的基础协议流程图

大致流程是,在客户机在在访问cas客户端时都需要请求服务端惊醒身份验证,再验证未通过是时,会被重定向至cas的服务端进行登陆,而后再次验证,通过之后又重定向到客户端界面。这里只是一些文字描述,真正的实现我们接下来看如何操作:

首先,我需要介绍一下,配置cas的服务端有两种方式:一种是http方式,另一种是https方式。笔者这里将演示如何配置https方式的cas服务端。

第一步我们肯定是需要准备我们的原材料:笔者这里用的是cas-server-4.0.7.war,tomcat7

首先需要的是导出你的证书,使用jdk的keytool工具,命令如下:

keytool -genkey -alias castest -keyalg RSA -keystore C:/key/casKey.keystore

这里是生成你的keystore文件,C:/key/casKey.keystore是指文件生成路径,即c盘下的key文件夹下生成casKey.store文件,注意文件夹一定要存在这里你会输入你的证书信息,注意口令为你的密码,用户名将为你后期配置服务端请求的域名

第二步导出crt文件:

keytool -export -file C:/key/casKey.crt -alias castest -keystore C:/key/casKey.keystore

执行完这两步,你将生成两个文件:

第三步:将生成的证书导入你的运行jdk中:

keytool -import -keystore "C:/Program Files/Java/jdk1.8.0_131/jre/lib/security/cacerts" -file C:/key/casKey.crt -alias castest

这里需要注意的是你的路径一定要为你的jdk->jre->lib->security,如果你的路径下存在此文件,则需要将其删除,再执行导入,密钥库口令默认为changeit

然后将生成的证书文件文件拷贝至jdk->bin下,在c://windows/System32/drivers/etc/hosts文件中添加你的域名映射,没有该文件需创建一个hosts文件,添加内容如下

127.0.0.1 sso.castest.com

接下来就开始配置tomcat环境了,首先将你的cas-server-4.0.7.war拷贝至tomcat的webapps下,改名为cas.war。打开tomcat->conf->server.xml,找到如下内容:

将其反注释,修改为:

<Connector port="8086" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"clientAuth="false" sslProtocol="TLS" keystoreFile="C:/key/casKey.keystore" keystorePass="casDemo" />

这里需要注意:keystoreFile为你第一步生成的keystore文件的位置,keystorePass为你第一步输入的口令密码,不是changeit

接下来做个测试,启动tomcat,输入地址https://sso.castest.com:8086/cas/,出现如下界面

添加好信任之后,进入如下界面,则说明服务端配置成功:

ok,以上步骤如果没有成功,请仔细检查之前步骤。成功了之后,恭喜,那就可以进入客户端端的配置了,首先,下载服务端架包,这里用的是cas-client-core-3.2.1.jar,然后准备一个测试tomcat,用来测试单点登录,创建一个web项目,取名为casDemo001

pom.xml加入如下:

<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>3.2.1</version></dependency><!-- https://mvnrepository.com/artifact/commons-collections/commons-collections --><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-logging/commons-logging --><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency>

web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><!-- ======================== 单点登录开始 ======================== --><!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置--><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>CASFilter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>https://sso.castest.com:8086/cas/login</param-value></init-param><!--指定客户端的域名和端口,是指客户端应用所在机器而不是 CAS Server 所在机器以下配置表示,系统部署在域名为shirui-55的机器上,端口为80 --><init-param><param-name>serverName</param-name><param-value>http://localhost:8111</param-value></init-param></filter><filter-mapping><filter-name>CASFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 该过滤器负责对Ticket的校验工作,必须启用它 --><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>https://sso.castest.com:8086/cas</param-value></init-param><init-param><param-name>serverName</param-name><param-value>http://localhost:8111</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><!-- ======================== 单点登录结束 ======================== --><!-- session超时定义,单位为分钟 --><session-config><session-timeout>2</session-timeout></session-config></web-app>

这里需注意的是关于两个casServer的url的编写

启动tomcat(需要修改端口号,要不然后报端口号被占用错误,这里修改为8111,当然你可以根据自己的爱好修改,对这里来说无关痛痒),将项目运行,启动成功后输入地址:localhost:8111/casDemo001/,出现如下界面

这就证明配置成功了,你的请求已经被拦截,并且正确的跳到了你的cas服务器登录界面,输入账号密码:casuser     Mellon(这是cas默认的登录账户,配置数据验证的话下一篇博文会讲述),登陆后出现如下界面:

然后刷新cas服务端的界面,出现如下图界面:

至此,cas服务端与客户端的配置已经完成,服务端文件下载链接链接:https://pan.baidu.com/s/1qY1H0aK    密码:7e52

转载于:https://www.cnblogs.com/advanceBlog/p/8093908.html

cas单点登录学习:cas服务端与客户端的搭建相关推荐

  1. CAS单点登录学习笔记二之部署CAS Server

    CAS Server 服务器部署 [b]简介[/b] CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 ...

  2. cas单点登录学习笔记 .

    CAS 单点登录使用详解 ============================================================================== 开发环境 :My ...

  3. java模拟网易邮箱登录_使用服务端和客户端两种方法 模拟网易邮箱实现全选,全不选的功能...

    服务端和客户端的差别是 服务端在每次全选或全不选是都要刷新界面 而客户端不会 服务端: 前台 DataKeyNames="id" DataSourceID="SqlDat ...

  4. jas CAS单点登录学习之一   单点流程

    比如现在有web1,web2两个工程,jas部署在tomcat下的8440端口下,如果要实现单点登录需要进行如下改动: 1.在web1.web2中引入jasig客户端jar包 2.web1.web2拦 ...

  5. zabbix服务端和客户端的搭建

    zabbix服务端 备注:zabbix必须运行在LAMP或者LNMP环境下 说明:系统:centos IP:192.168.1.100 LNMP脚本:链接:https://pan.baidu.com/ ...

  6. PYNQ 采集计划(二)Socket服务端与客户端的搭建,pynq到pc的数据流传输

    文章目录 利用Socket搭建客户端和服务端 简易Socket收发 服务端的搭建 客户端的搭建 真正的视频socket收发 服务端 PC端客户端 进行测试 源码github地址 利用Socket搭建客 ...

  7. java培训爆破专栏之Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  8. 服务器响应回调函数,解决有关flask-socketio中服务端和客户端回调函数callback参数的问题(全网最全)...

    由于工作当中需要用的flask_socketio,所以自己学习了一下如何使用,查阅了有关文档,当看到回调函数callback的时候,发现文档里都描述的不太清楚,最后终于琢磨出来了,分享给有需要的朋友 ...

  9. Netty的Socket编程详解-搭建服务端与客户端并进行数据传输

    场景 Netty在IDEA中搭建HelloWorld服务端并对Netty执行流程与重要组件进行介绍: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

最新文章

  1. ACMNO.12有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数。 输入 N 输出 数列前N项和 样例输入 10
  2. 为什么特斯拉不使用激光雷达
  3. HDU6964 I love counting (字典树+莫队)
  4. java每隔一段时间执行_8.Android中,每隔一段时间执行某一个任务(Timer)
  5. Python零碎知识(11):assert用法
  6. ajax多文件上传,js限制上传文件大小,文件上传前在浏览器展示
  7. 文件包含——apache日志文件包含shell(四)
  8. 《源码分析转载收藏向—数据库内核月报》
  9. Leetcode--全排列(Java)
  10. C++学习之路 | PTA乙级—— 1061 判断题 (15 分)(精简)
  11. Spring之容中的工厂Bean
  12. 大一java题库及答案_2016最新java考试题库及答案
  13. 关于计算机应用技术的创业策划书,计算机创业项目计划书.docx
  14. SQL中的DDL、DML、DCL、TCL是什么意思
  15. python爬虫笔记五:汽车之家贴吧信息(字体反爬-动态映射)
  16. 二叉树:二叉树视频笔记
  17. 用python绘制散点图
  18. Maven入门-6-Maven的生命周期和核心命令详细介绍
  19. 法国留学DIY的必备条件和步骤
  20. html页面怎么判断未登录,未登录用户.html

热门文章

  1. Python -- 大小写转换
  2. 色差仪软件的安装和电池充电
  3. linux--安装完qt出现 /usr/bin/ld: error: cannot find -lGL错误
  4. 百度人脸识别离线SDK_Android版_在线激活失败:not enough param_解决方案---百度人脸识别技术应用005
  5. Element-UI-主页面---Element-UI工作笔记007
  6. 认证授权介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记109
  7. Sentinel流控规则_QPS直接失败_分布式系统集群限流_线程数隔离_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0033
  8. 通过人脸测试心率和呼吸率
  9. opencv实现多个图拼接成一个图
  10. 2015年 4月2号的日志