cas单点登录环境搭建

cas server 3.5.2 环境搭建 1、先从网上把cas serve,cas client 包下载下来,我是从官网下载的,比较费尽用翻墙下来的 2、tomcat 6 下载新的 3、开始搭建cas server  1) 解压cas server 3.5.2 model 下有个cas-server-webapp-3.5.2.war 包,改cas.war(不改也可以) 2)解压 tomcat6 ,把 阅读详情

公司最近想做一个类似单点登录功能的项目,考虑用cas还是用memcache达到单点登录功能。自己以前搭过cas+shiro的环境,记忆已有些模糊。重新搭一下cas的环境,遇到了一些问题,写下来,希望能帮到某些人,也留着以后忘记的时候,拿来看看。以下是一些步骤,网上也有很多类似的文章,都大同小异:

一  环境准备

      在本机安装jdk(安装方法网上很多,如:http://www.blogjava.net/jackyfoo/archive/2007/01/20/95034.html),搭建tomcat(本人6.0以上)环境。从cas官网下载cas服务端(下载地址:http://downloads.jasig.org/cas/cas-server-3.5.2-release.zip)


二 设置证书

    在cas服务端的机器上,通过jdk自带的keytool生成证书,如下:

  keytool -genkey -alias caskey -keyalg RSA -keystore d:\keys\caskey.keystore (其中caskey为别名,把证书caskey.keystore保存到d:\keys目录下)

  

(注意,图的文件命名跟上面给出的文件名字不一样)

  导出证书

  keytool -export -trustcacerts -file d:\keys\caskey.crt -alias caskey-keystore d:\keys\caskey.keystore (导出证书caskey.crt到d:\keys\目录下)


  (注意,图的文件命名跟上面给出的文件名字不一样)

导入证书到cas客户端(本人服务端和客户端都在一台机器上,首先命令窗口要到jre的指定目录下,本机为:C:\Program Files\Java\jdk1.6.0_20\jre\lib\security),如:

   keytool -import -trustcacerts -keystore cacerts -file d:\keys\caskey.crt -alias caskey-storepass changeit (其中changeit这个密码为固定,不能改)


(注意,图的文件命名跟上面给出的文件名字不一样)


三、开启服务端Tomcat的SSL连接服务(注意:确保Tomcat所用的JDK和之前所导入证书的JDK是相同的,有的eclipse中的tomcat是用的eclipse自带的jdk的,这个要区分好的,因为本人刚开始跑应用的时候用的是eclipse的jetty插件,用的jdk不是本机的jdk,当回调的时候抛出java.security.cert.CertificateException: No name matching www.casserver.com found异常,www.casserver.com为本人cas服务端的域名)

修改Tomcat的conf下面server.xml文件,去掉以下代码的注释,然后添加你自己的keystore

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
keystoreFile="d:\keys\caskey.keystore" keystorePass="123456"/> (caskey.keystore为生成的证书,123456为证书密码)

四、部署cas服务端

        解压cas-server-3.5.2-release.zip,复制modules下面的cas-server-webapp-3.5.2.war到tomcat的webapp下面,重命名为cas.war,启动tomcat后,用浏览器访问https://你的域名:8443/cas就可以访问。默认的情况下,输入相同的用户名和密码就可以成功登录。这种需要通常都不适合用户需求,可以修改cas项目的deployerConfigContext.xml配置文件。在<sec:user-service id="userDetailsService">这个节点后面添加casDataSource:


注释掉SimpleTestUsernamePasswordAuthenticationHandler,添加QueryDatabaseAuthenticationHandler:



同时,还要把需要的jar包丢进tomcat的cas项目的lib目录下,否则,会抛出某些类找不到的异常。这些包分别是:mysql-connector-java-5.1.15.jar(这是mysql的驱动包),commons-dbcp-1.4.jar,commons-pool-1.6.jar(这两个是配置数据源依赖的包),cas-server-support-jdbc-3.5.2.jar(QueryDatabaseAuthenticationHandler就在这个包里面,默认是没有的,可以到cas-server-3.5.2-release.zip解压后modules目录下拷贝。


五、配置客户端(即应用系统)

本人的项目用的是maven管理,只要把依赖加进去就可以,依赖如下:

<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.2.1</version>
</dependency>

在应用系统有web.xml做以下配置:

<!-- 该过滤器用于实现单点登出功能,可选配置。 -->  
    <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://www.casserver.com:8443/cas/login</param-value>  <!--  这里是我的cas服务端的登录访问地址-->
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://www.casclient1.com:8085</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://www.casserver.com:8443/cas</param-value>  <!--  这里是我的cas服务端的访问地址-->
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://www.casclient1.com:8085</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>  

以上的配置网络上很容易找到。同时,可以修改系统的hosts文件(C:\WINDOWS\system32\drivers\etc\hosts),设置域名,我的hosts文件如下:


到这里,cas单点登录基本部署完成了。用户可以访问,www.casclient1.com,当未登录的时候,会跳转到www.casserver.com(cas服务端)进行登录认证,认证通过后,回调到www.casclient1.com上。

本人理解的单点登录流程大概如下:

首先用户访问应用,应用配置了cas的filter,filter拦截,根据web.xml的配置地址,然后定向到cas服务端上,cas服务端检查用户的cookie,发现用户没曾登录,就显示登录页面让用户登录认证。认证通过后,cas往用户的客户端写加密的cookie,然后回调到用户实际访问的应用地址。如果发现用户已经登录,就直接回调到用户实际访问的应用地址,而无需用户再登录。无论用户是否登录过,都要经过cas服务端,再进行回调。

       以上cas的配置方式跟网上的大同小异,不过加入了本人遇到的一些问题,希望能帮遇到同样问题的人更好理解。也因本人知识有限,如有不对,希望指正。


补充:

通常我们添加用户的时候,密码都是通过加密了的,这样,对登录的输入密码也要加密,才能和数据库的密码进行匹配。看了一下QueryDatabaseAuthenticationHandler(在cas-server-support-jdbc.jar包下)的原码,在对密码的匹配时,调用了getPasswordEncoder()方法来对输入密码进行加密。源码如下:


显然getPasswordEncoder()方法是在父类定义的,通过跟代码,可以看到在cas-server-core.jar包下的AbstractUsernamePasswordAuthenticationHandler类中定义,代码如下:


该类中默认使用了PlainTextPasswordEncoder类来进行加密,但PlainTextPasswordEncoder这个类的是对密码没有任何加密动作,直接返回密码的,代码如下:


所有,只要自己写一个Encoder,替换PlainTextPasswordEncoder,就能达到自己加密方法的效果。自己的Encoder代码如下:


其中,用的是commons-codec.jar包下的DigestUtils进行加密。当然,加密方法必须和保存到数据库的密码加密方法一致。


然后,修改cas项目的deployerConfigContext.xml配置文件。添加自己的Encoder:

<bean id="passwordEncode" class="com.cas.encode.passwordencode.MD5Encoder"/> 

把encoder注入到QueryDatabaseAuthenticationHandler中

<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">  
<property name="dataSource" ref="casDataSource" />  
<property name="sql" value="select password from user where username = ?" /> 
<property name="passwordEncoder" ref="passwordEncode" /> 
</bean>

这样,加密方式就起作用。

2013.7.31

Springboot+shiro+cas单点登录环境搭建 Springboot+shiro+cas单点登录环境搭建 最近这段时间忙好久没有写博客了,现在给大家上点干货,废不多说了, 1.首先在pom.xml中添加依赖 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.shiro&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;ar 阅读详情

相关推荐

SSO 单点登录 CAS4.0 环境的搭建

单点登录(Single Sign On,简称SSO)是目前比较流行的服务于企业业务整合的解决方案之一,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS(Central Authentication Service)是一款不错的针对Web应用的单点登录框架,这里就说说使用CAS实现SSO的方式。

xuziyue214的博客 1066

将cas-server-3.5.2 导入到myeclipse中

1、从官网上下载 cas-server-3.5.2-release.zip 并解压,目录结构如下图 地址为 https://www.apereo.org/projects/cas 2、其中modules 下的cas-server-webapp-3.5.2.war 为项目,可以直接放到tomcat下面,可以用了,但是我想要修改cas项目,因此不用这个,而把源码导入到myeclips

KID5945的博客 878

cas-server-3.5.2

cas-server-3.5.2-release.zip

【CAS单点登录视频教程】 第05集 -- CAS服务器安装

第一步: 下载cas 服务器 cas-server-3.5.2-release.zip 目录 ----------------------------------------- 【CAS单点登录视频教程】 第06集【完】 -- Cas认证 学习 票据认证FormsAuthentication   【CAS单点登录视频教程】 第05集 -- CAS服务器安装   【CA...

weixin_34197488的博客 124

cas-server-3.5.2.rar

CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。

cas-server-3.5.0-release

cas源代码;cas-server-webapp-3.5.0.war等,其中包含很多可用的包

SSO单点登录系统CAS简述及环境搭建(图文详细)

链接:https://pan.baidu.com/s/1HRkJ_iCn2w2KTidkdtb4Gg 提取码:mah7 什么是SSO单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 什么是CAS CAS 是 Yale 大学发起的一个开源项目...

战丶后风!!的博客 1961

CAS整合Shiro单点登录企业级实战(基于Java,附源码)

Cas的全称是Centeral Authentication Service,是对单点登录SSO(Single Sign On)的一种实现。其由Cas Server和Cas Client两部分组成,Cas Server是核心,而Cas Client通常就对应于我们的应用。一个Cas Server可以对应于多个Cas Client。它允许我们在一个Client进行登录以后无需再让用户输入用户名和密码进行认证即可访问其它Client应用。

CAS SSO单点登录服务端环境搭建

鸿鹄云 Cloud 是基于 Spring Cloud 来封装的,是一系列框架的有序集合。 利用 Spring Boot 的开发模式简化了分布式系统基础设施的开发,如服务发现、 注册、配置中心、消息总线、负载均衡、断路器、数据监控等(这里只简单的列 了一部分),都可以用 Spring Boot 的开发风格做到一键启动和部署。鸿鹄云 Cloud 将目前比较成熟、经得起实际考验的服务框架组合起来,通过 Spring Boot 风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终整合出一套简单易懂、 易部署和易维护的

iteye_3750的博客 300

FPGA实现PI控制

FPGA实现PI控制

m0_57319166的博客 3897

XPe开发初体验(一)XPe概述

XP Embedded是微软Windows Embedded产品线中非常重要的一环,不过比起大名鼎鼎的Windows Embedded CE,XPe显得过于低调了。在接下来的一段时间里,我希望能够用六篇的篇幅来描述一下XPe的整个开发过程。这个系列文章主要是针对有Windows编程经验,但是没有嵌入式开发经验的开发者,提供一些概念和开发过程的初步介绍。XP Embedded是一个基于Windo

aawolf = new Mobile.MVP 1万+

CAS单点登录的环境搭建及使用

一.环境         软件:jdk1.7、 tomcat7、 cas-server-3.4.11、cas-client-3.2.1         系统环境:             编辑C:\Windows\System32\drivers\etc\host文件,添加如下内容:demo.wh.com 127.0.0.1 app1.wh.com 127.0.0.1 二.证书配置

svmachine的博客 838

Rust Reqwest+Rustls 自签名证书校验

所以这里必须保证reqwest引用的rustls库和本地工程一致。以上就是实现不校验签名的逻辑,后续自己可以在对应回调进行逻辑判断。

bawomingtian123的专栏 1357

cas单点登录学习(一)搭建环境

cas单点登录学习(一)搭建环境下载cas-overlay-template部署服务 下载cas-overlay-template 现在最新版本是6.2.x 要求JDK11 我们这次选择的是5.3版本 要求JDK1.8+ 切换分支,选择5.3分支 下载 git clone https://github.com/apereo/cas-overlay-template.git -b 5.3 ...

宋大王的博客 434

YOLO26 电子产品零部件质检:缺陷检测 + Streamlit

YOLO26s 电子质检链路:1100 张工业零部件图 (4 类缺陷) → 增强 (blur+shear+低光照) → 150 epoch → mAP@0.5=0.91 → Streamlit 质检界面 (上传/摄像头双模式) → 缺陷严重度分级 (pass/minor/major/critical)。核心贡献:blur+shear 模拟产线振动和视角偏移, 使模糊场景 recall 从 72% 提升至 78%;Streamlit 一键部署, 无需前端经验。建议先收集 200 张纯正常件做负样本防过检;

m0_71589036的博客 375

第14.7章 高翔博士最新开源框架Lightning-LM源码解读(七):PoseExtrapolator模块深度剖析,揭秘激光SLAM高频位姿外推核心技术

PoseExtrapolator是Lightning-LM框架中负责高频位姿外推的核心模块,通过融合DR(航位推算)、激光里程计和PGO(位姿图优化)数据实现精准实时定位。模块初始化依赖PGO数据,后续通过DR数据进行高频位姿更新,并利用PGO结果进行误差补偿。关键函数AddDRLocAndExtrapolate处理DR增量位姿,结合速度补偿机制逐步修正误差,保证高频输出的同时提升精度。该模块体现了多传感器融合思想,通过互补性数据(高频DR与低频高精PGO)实现鲁棒定位,代码中使用了SE3位姿表示、互斥锁保

行知SLAM 348

单点登录cas综述之cas4.2.7服务端+cas客户端+示例程序+环境搭建说明-陈杰

      1环境搭建以及把示例程序跑起来          1.1  安装jdk1.8          1.2 下载tomcat8+cas4.2.7服务端war+cas客户端war                   1.2.1下载经过配置的Tomcat8和本教程配套文件                   1.2.2下载配置好的cas4.2.7服务端的war包        ...

pucao_cug的专栏 1万+

嵌入式工程师成长之路(10)——项目举例

送给大学毕业后找不到奋斗方向的你(每周不定时更新)

云轩阁 5万+

Spring Cloud + Spring Boot + Mybatis + Uniapp 企业架构之CAS SSO单点登录服务端环境搭建

1.因为是本地模拟sso环境,而sso的环境测试需要域名,所以需要虚拟几个域名出来,步骤如下: 2.进入目录C:\Windows\System32\drivers\etc 需要框架源码的朋友可以看我个人简介联系我 ​ 3.修改hosts文件 127.0.0.1 jeesz.cn 127.0.0.1 sso1.jeesz.cn 127.0.0.1 sso2.jeesz.cn 4.生成认证证书 注意:我们可以根据sso单点登录的架构图可以看到,在客户端和服务端进行交互的时候,是需要认证的,在这里...

m0_61571842的博客 183

51、基于深度卷积神经网络的自闭症分类研究

本研究提出了一种基于深度卷积神经网络的自闭症分类方法,通过融合VGGNet-19和ResNet-52模型的特征,并在决策层采用SVM分类器,实现了对自闭症谱系障碍(ASD)和典型发育(TD)个体的准确区分。研究使用ABIDE数据集,结合数据增强和特征拼接技术,取得了88.12%的分类准确率和0.88的ROC曲线下面积。结果表明,该方法在自闭症自动诊断中具有良好的性能,同时研究也探讨了其局限性,并展望了未来改进方向,如多模态数据融合、迁移学习和模型可解释性的提升。

grpc6streamer的博客 130

FTU电科院检测学习笔记-规划

如果写到最后,还非常的有动力和兴趣,可能会举出一些特定的例子来,但不保证一定是这样。

sixtome 1101

【单点登录笔记一】在eclipse+maven中搭建cas-server环境

在eclipse+maven中搭建cas-server环境 单点登录系统的使用还是很广泛的,在之前在微信公众号的开发中就有使用过,但是那时使用的客户端,对服务端的部署,二次开发没有实践。在这里记录下搭建过程。 ps:环境是cas-server-4.2.7 1.单点登录的一般流程 我接触过的单点登录(sso)的流程基本都一致,这里不拘泥于cas,大致记录一下单点登录的登录流程: 1. 用...

yuyanping39的专栏 1660

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: centos下subversion一些使用
下一篇: 我的shiro之旅: 三 浅谈shiro的filter
LHacker
博客等级 码龄17年 162粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值