官方文档: https://apereo.github.io/cas/5.1.x/index.html

几个基本概念

CAS Server: SSO服务器端
CAS Client : SSO客户端,内置于各个子应用
ST: Service Ticket 用于登录验证
TGC:Ticket Granted Cookie 用于验证是否已经登录,保存在客户端Cookie
TGT:Ticket Granting Ticket 跟TGC对应,保存于服务器

server端: 建议用overlay模式安装,源码在:https://github.com/apereo/cas-overlay-template,下载好之后用执行 build package生成war包,放到tomcat的webapp下

client端:可以参考:https://github.com/akononowicz/cas-sample-java-webapp


 关于服务注册

service的注册可以使用json方式,方法如下:

在/etc/cas/config/cas.properties如下配置:

cas.serviceRegistry.config.location: classpath:/services
cas.serviceRegistry.watcherEnabled=true
cas.serviceRegistry.repeatInterval=10000
cas.serviceRegistry.startDelay=5000
cas.serviceRegistry.initFromJson=true

然后在classpath下的service目录下添加自己service的配置,当然,文件名需要遵循 [name] + "-" + [id] + ".json"的方式

{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^https://172.17.20.20:8443/client2",
"name" : "client2",
"theme" : "apereo",
"id" : 2000,
"description" : "Cient2 sample service",
"evaluationOrder" : 1,
"logoutType" : "BACK_CHANNEL",
"logoutUrl" : "https://172.17.20.20/client2/logout.jsp",
}

 关于SSL证书

比较麻烦的是ssl证书的生成

1. Tomcat 证书导入

keytool -genkey -alias tomcat -keyalg RSA -keystore /opt/apache-tomcat-8.5.9/conf/.keystore

然后修改tomcat的server.xml

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" keystoreFile="/opt/apache-tomcat-8.5.9/conf/.keystore" keystorePass="liuwei" sslProtocol="TLS" />

2. JDK证书导入

p12生成
keytool -importkeystore -srckeystore /opt/apache-tomcat-8.5.9/conf/.keystore \
-destkeystore tomcat.p12 \
-srcstoretype jks \
-deststoretype pkcs12 pem生成
openssl pkcs12 -in tomcat.p12 -out tomcat.pem der生成
openssl x509 -in tomcat.pem -out tomcat.der -outform DER 导入JDK
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file tomcat.der -alias tomcat

我遇到的错误如下:

1. cas-client端,需要指向server时,linux自己配置的ssl设置firstname和lastname时需要指定域名而不是IP,当然host文件(/etc/hosts)也需要改,否则会出现如下错误

2. 另外,JDK的ssl也需要配置(默认密码changeit),否则会出现如下错误

具体可参考:https://wiki.jasig.org/display/casum/ssl+troubleshooting+and+reference+guide#SSLTroubleshootingandReferenceGuide-ImportTrustedCertificate

java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:443)
org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:41)
org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:193)
org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:204)
org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:97)

CAS 5.X 安装的更多相关文章

  1. cas:覆盖安装

    1.首先到github上下载最新的模板代码 https://github.com/apereo/cas-overlay-template 下载完成后,导入该工程. 2.编译打包 cd cas-over ...

  2. CAS单点登录安装笔记

    http://lib.iteye.com/blog/166619 https://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870838.html

  3. (转)Yale CAS + .net Client 实现 SSO(2)

    第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 1. 下载 CAS 及.NET CAS client. CAS下载地址:http://www.jasig.org/cas/download ...

  4. CAS实现的单点登录系统

    单点登录(single sign on ),简称SSO. 纯属学习用,对来自网络的部分如果侵害了您的权力,请联系我.QQ:262800095 SSO的定义是在多个应用系统中,用户只需要登录一次就可以访 ...

  5. 单点登录之 CAS SSO 从入门到精通(第一天)

    转自:http://blog.csdn.net/lifetragedy/article/details/43817903 啊......it's quite a long time. 好久没更新博客了 ...

  6. java多线程系列之 synchronized

    一.synchronized基本原理 java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁.线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁. ...

  7. IIS 7如何实现http重定向https

    转自[http://blog.csdn.net/xuhuojun/article/details/6137154] 在不少的企业当中,网站设计出于安全的考虑使用了https协议,但同时公司也开放了80 ...

  8. JVM内部细节之一:synchronized关键字及实现细节(轻量级锁Lightweight Locking)

    在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作.然而在Java中除了提供Lock API外还在语法层面上提供了synchronized关键字来实现互斥同步 ...

  9. java并发编程(二)synchronized

    参考文章: http://blog.csdn.net/javazejian/article/details/72828483http://ifeve.com/java-synchronized/htt ...

随机推荐

  1. Sequelize框架:

    1.安装mysql支持: npm install mysql --save-dev 2.安装sequelize npm install sequelize --save-dev 3.创建ORM对象 v ...

  2. unity3d 5.6参考手册

    http://www.vfkjsd.cn/unity3d/Manual/index.html http://www.vfkjsd.cn/unity/unity3d.html

  3. docker卸载与安装

    sudo apt remove docker.io 报错如下: Reading package lists... Done Building dependency tree Reading state ...

  4. scala中的注解

    scala中很多注解实现java中关键字的用法 @volatile注解标记为易失的:@transient注解将字段标记为瞬态的:@strictfp注解对应strictfp修饰符:@native注解标记 ...

  5. 数据结构_wow(泡泡的饭碗)

    问题描述 饱了吗终于发现泡泡破解了它的代码并借此白吃白喝.饱了吗当即改变了自己的幸运儿生成源码,但是,又被机智的泡泡偷瞄到了,机智的泡泡马上意识到可能要饭碗不保了:每当有人参与抽奖,这个人就进入队列. ...

  6. 缓存淘汰算法之LRU

    1. LRU1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”. ...

  7. Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)

    Linux内核源码分析-链表代码分析 分析人:余旭 分析时间:2005年11月17日星期四 11:40:10 AM 雨 温度:10-11度 编号:1-4 类别:准备工作 Email:yuxu97101 ...

  8. onmouseover和onmouseout在GridView中应用 Ver2

    第一个版本,可以参考:http://www.cnblogs.com/insus/archive/2009/03/13/1411057.html 以前的版本,是在Gridview的OnRowCreate ...

  9. javascript js获取url及url参数解析

    js获取url及url参数解析 一.获取url: var url=window.location.herf; 二.url参数解析: function GetRequest() { var url = ...

  10. Gazebo学习随记3 图形界面的使用

    直接写模型的SDF文件实在是太反人类啦! 可以在gazebo图形界面中设置好模型的链接(碰撞外观惯性),关节等等参数-然后生成SDF文件