首页 > 其他分享 >CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端

CAS SSO单点登录基础实践,配置CAS 服务器和CAS客户端

时间:2023-06-27 22:02:57浏览次数:50  
标签:keystore 单点 CAS server cas SSO client changeit


参考网址:http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/index.html

 

到 CAS 官方网站下载 CAS Server 和 Client,地址分别为:

http://www.ja-sig.org/downloads/cas/cas-server-3.1.1-release.zip

http://www.ja-sig.org/downloads/cas-clients/ cas-client-java-3.0.0.zip

      CAS Server 是一套基于 Java 实现的服务,该服务以一个 Java Web Application 单独部署在与 servlet2.3 兼容的 Web 服务器上,另外,由于 Client 与 CAS Server 之间的交互采用 Https 协议,因此部署 CAS Server 的服务器还需要支持 SSL 协议。当 SSL 配置成功过后,像普通 Web 应用一样将 CAS Server 部署在服务器上就能正常运行了,不过,在真正使用之前,还需要扩展验证用户的接口。

在 Tomcat 上部署一个完整的 CAS Server 主要按照以下几个步骤:

       1、配置使用 Https 协议

如果希望 Tomcat 支持 Https,主要的工作是配置 SSL 协议,其配置过程和配置方法可以参考 Tomcat 的相关文档。不过在生成证书的过程中,会有需要用到主机名的地方,CAS 建议不要使用 IP 地址,而要使用机器名或域名。

具体配置可参考以下内容

我们使用keytool工具创建keystore文件。可以在<JAVA_HOME>/bin目录中找到keytool工具。

 

1.     生成密钥对

keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore

2  将服务器证书导出为证书文件:

keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore 

 输入密码(changeit):

Keytool返回下列消息:

Certificate stored in file <server.cer>

 

3 用keytool在所选的keystore文件中创建客户端证书:

 

keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore

 

4 将新客户端证书从keystore导出到证书文件:

 

keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore

 

输入keystore密码(changeit)。Keytool将返回该消息:

 

Certificate stored in file <client.cer>

 

 

5 将上述步骤所得到的tomcat根目录下server.cer以及client.cer证书文件导入到cacerts 文件中,

cacerts文件默认生成在tomcat根目录下

 

keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit

 

keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit

 

6在tomcat根目录下找到cacerts文件,拷贝到<JAVA_HOME>\jre\lib\security文件下

 

 

从下载得cas-server3最新版本中找到target文件下面得cas.war,拷贝到<TOMCAT_HOME>/webapp目录下

,修改<TOMCAT_HOME>/conf下面得server.xml文件,添加如下:

 

<Connector port="8443" maxHttpHeaderSize="8192"

               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

               enableLookups="false" disableUploadTimeout="true"

               acceptCount="100" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" keystoreFile="/server.keystore" keystorePass="changeit"/>

 

特别提示: 在以上配置CAS SSL之后,个人实践感觉很不好。老是弹出,安全提示。感觉对用户不好。不知道哪位高手有好的办法。我的解决办法是修改源代码,不用https,就不用提示了。这个方法在以后的cas 系列文章中也说说。

 

 

       2、部署CAS server

       CAS Server 是一个 Web 应用包,将前面下载的 cas-server-3.1.1-release.zip 解开,把其中的 cas-server-webapp-3.1.1.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war。由于前面已配置好 tomcat 的 https 协议,可以重新启动 tomcat,然后访问:https://localhost:8443/cas ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。

虽然 CAS Server 已经部署成功,但这只是一个缺省的实现,在实际使用的时候,还需要根据实际概况做扩展和定制,最主要的是扩展认证 (Authentication) 接口和 CAS Server 的界面。

界面在cas/WEB-INF/view/jsp/default。

           3、CAS客户端部署

准备好两个应用之后,在web.xml中,增加以下filter

<web-app>
 ...
 <filter>
    <filter-name>CAS Filter</filter-name>
    <filter-class>edu.yale.its.tp.cas.client.filter.CASFilter</filter-class>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.loginUrl</param-name>
      <param-value>https://domainA:8443/cas/login</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
      <param-value>https://domainA:8443/cas/serviceValidate</param-value>
    </init-param>
    <init-param>
      <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
      <param-value>domainB:8080</param-value>
    </init-param>
 </filter>
 <filter-mapping>
    <filter-name>CAS Filter</filter-name>
    <url-pattern>/protected-pattern/*</url-pattern>
 </filter-mapping>
 ...
</web-app>
        4、在应用中,获取用户名
在jsp代码中,加入以下代码即可。
session.getAttribute(CASFilter.CAS_FILTER_USER);
session.getAttribute("edu.yale.its.tp.cas.client.filter.user");


标签:keystore,单点,CAS,server,cas,SSO,client,changeit
From: https://blog.51cto.com/nethub/6566796

相关文章

  • CAS SSO配置
    基于CAS+Tomcat配置SSO一、系统配置casserver3.1.1casclient2.1.1tomcat5.5二.Tomcat配置,启用SSLa.在要安装CAS的机器上为Tomcat生成用于SSL通讯的密钥:%JAVA_HOME%/bin/keytool-genkey-aliastomcat-keyalgRSA这时需要输入密钥密码和其他参数(第一个参数CN必须设置为CAS机......
  • 状态机编程实例-嵌套switch-case法
    嵌入式软件开发中,状态机编程是一个比较实用的代码实现方式,特别适用于事件驱动的系统。本篇,以一个炸弹拆除的小游戏为例,介绍状态机编程的思路。C/C++语言实现状态机编程的方式有很多,本篇先来介绍最简单最容易理解的switch-case方法。1状态机实例介绍1.1炸弹拆除游戏如下是一个自制......
  • Linux扩展篇-shell编程(五)-流程控制(二)-case语句
    基本语法:case"${item}"in1)echo"item=1";;2|3)echo"item=2oritem=3";;*)echo"default(noneofabove)";;esac注意事项:以case开始esac结尾case行尾必须为单词“in”,每......
  • SSO2.0 15-20230626
                     ......
  • 海量数据运维要给力,华为云GaussDB(for Cassandra)来助力
    应用运维管理平台(AOM)和Cassandra是两个不可分割的组成部分,它们共同构成了一个高效的解决方案,可以帮助企业在应用运维业务上取得巨大的优势。在这篇文章中,我们将介绍AOM和Cassandra的优势和特点,揭晓它们如何为企业保持市场竞争力的秘密。导读随着容器技术的普及,越来越多的企业通过微......
  • Java多线程-Lesson02
    一.Lamda表达式λ是希腊字母表的第十一位字母,英文名是LambdaLamda表达式的出现主要是为了避免匿名内部类过多的原因,它属于函数式编程的范畴 为什么要使用Lamda表达式?避免匿名内部类定义过多可以让你的代码看起来很简洁去掉了没有意义的代码,只留下一堆核心逻辑主要使用在......
  • 锁(case篇)
    case1(表锁的读-写-读阻塞)上篇文档中提到过WRITElocksnormallyhavehigherprioritythanREADlockstoensurethatupdatesareprocessedassoonaspossible.ThismeansthatifonesessionobtainsaREADlockandthenanothersessionrequestsaWRITElock,su......
  • Luogu P4720 【模板】扩展卢卡斯定理/exLucas
    【模板】扩展卢卡斯定理/exLucas题目背景这是一道模板题。题目描述求\[{\mathrm{C}}_n^m\bmod{p}\]其中\(\mathrm{C}\)为组合数。输入格式一行三个整数\(n,m,p\),含义由题所述。输出格式一行一个整数,表示答案。样例#1样例输入#1533样例输出#11样例#2......
  • CAS是什么
    CAS又称自旋锁、无锁,是一种乐观锁compareandswap的缩写意为:比较并交换,实现并发算法的常用技术,就是说我不用加锁,也能保证(加锁会影响效率,可以考虑使用原子操作类)原子性,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而......
  • MySQL中str_to_date函数和cast函数
    MySQL怎么将字符串转为datetime类型?两种转换方法:1、使用str_to_date()函数,可以格式化字符串,根据指定格式将其转为日期时间值,语法“str_to_date(字符串值,转换格式)”。2、使用CAST()函数,可以将指定字符串值转换为datetime数据类型,语法“CAST(字符串值ASdatetime)”。MySQLDAT......