前言:本次部署为了测试集成CAS使用,部署使用oauth2.0协议的sso服务

1.打包

首先拉取工程 git clone git@github.com:apereo/cas-overlay-template.git

切换到5.3分支

如果需要启用mysql 数据库存用户名和密码和oauth协议,需要在pom文件添加下面的依赖

<!--...Additional dependencies may be placed here...--><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-oauth-webflow</artifactId><version>${cas.version}</version></dependency><dependency><groupId>org.apereo.cas</groupId><artifactId>cas-server-support-jdbc</artifactId><version>${cas.version}</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency>

添加好后,可以直接使用buil.cmd package进行打包,这时会遇到打包失败,是无法拉取xmlsectool.2.0.0.jar包,这时需要手动去提示的仓库下载jar包,然后install到本地仓库

这时再打包就可以成功了。

2.部署

cas如果使用单点登录需要使用https部署,开启tomcat的https服务,这个时候就需要生成秘钥和证书,在需要部署cas的机器上使用jdk自带的keytool工具生成秘钥

对秘钥进行加密的密码都使用changeit这个后面会在配置tomcat使用到。

keytool -genkey -alias cas2 -keyalg RSA -keystore /opt/mycaskey

使用该秘钥生成证书,注意生成证书时需要指定域名,我使用的默认的cas.example.org

keytool -export -file /opt/mycas.crt -alias cas2 -keystore /opt/mycaskey

然后将该证书导入到jre下面的目录

keytool -import -keystore /opt/jdk1.8.0_131/jre/lib/security/cacerts -file /etc/cas/mycas.crt -alias cas2

tomcat开启https需要在server.xml文件中添加修改配置

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"maxThreads="150" SSLEnabled="true" keystoreFile="/etc/cas/mycaskey" keystorePass="changeit"></Connector>

上面的/etc/cas/mycaskey 代表的是生成的秘钥,changeit代表生成秘钥后加密的密码

cas部署默认会去/etc/cas/conf目录下读取配置文件,包含cas.properties文件,文件中包含的配置为

cas.server.name: https://cas.example.org:8443

cas.server.prefix: https://cas.example.org:8443/cas

cas.adminPagesSecurity.ip=127\.0\.0\.1

logging.config: file:/etc/cas/config/log4j2.xml

#jdbc验证配置(注意结尾不要有空格等字符)

#查询账号密码sql,必须包含密码字段

cas.authn.jdbc.query[0].sql=select * from sys_user where username=?

#指定上面的sql查询字段名(必须)

cas.authn.jdbc.query[0].fieldPassword=password

#指定过期字段,1为过期,若过期需要修改密码

cas.authn.jdbc.query[0].fieldExpired=expired

#为不可用字段段,1为不可用,0为可用

cas.authn.jdbc.query[0].fieldDisabled=disabled

#数据库方言hibernate的知识

cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect

#数据库驱动

cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

#数据库连接

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/cas?useUnicode=true&characterEncoding=UTF-8

#数据库用户名

cas.authn.jdbc.query[0].user=root

#数据库密码

cas.authn.jdbc.query[0].password=baifendian

#默认加密策略,通过encodingAlgorithm来指定算法,默认NONE不加密

cas.authn.jdbc.query[0].passwordEncoder.type=DEFAULT

cas.authn.jdbc.query[0].passwordEncoder.characterEncoding=UTF-8

cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm=MD5

#开启oauth2.0需要添加的配置

cas.authn.oauth.refreshToken.timeToKillInSeconds=2592000

cas.authn.oauth.code.timeToKillInSeconds=30

cas.authn.oauth.code.numberOfUses=1

cas.authn.oauth.accessToken.releaseProtocolAttributes=true

cas.authn.oauth.accessToken.timeToKillInSeconds=7200

cas.authn.oauth.accessToken.maxTimeToLiveInSeconds=28800

cas.authn.oauth.grants.resourceOwner.requireServiceHeader=true

cas.authn.oauth.userProfileViewType=NESTED

注意tomcat下webapps下面的cas应用中也有配置,也需要修改,一个是注释掉

#cas.authn.accept.users=casuser::Mellon这个表示使用固定的用户名causer和密码Mellon登录,我们使用mysql存储用户名和密码所以需要注释

单点登录,肯定需要注册哪些网站可以使用这个单点登录服务,所以需要在tomcat的webapps下cas下面的service中新增一个支持的oauth2.0的服务注册的json文件,这里取名OAuth2-100001.json,文件内容包含

{"@class" : "org.apereo.cas.support.oauth.services.OAuthRegisteredService","clientId": "100001","clientSecret": "100001abcdeft","serviceId" : "^(https|http|imaps)://.*","name" : "OAuthService","id" : 100001}

准备好这些配置的修改后,可以启动tomcat,还有一点是关于域名host的配置,在部署cas的机器上需要添加,浏览器访问的机器上也需要添加。

3.应用

访问地址:https://cas.example.org:8443/cas/oauth2.0/authorize?response_type=code&client_id=100001&redirect_uri=http://www.baidu.com

访问后会跳转,打开的页面如下:

参数说明:

response_type=code,这个是按照code的方式接入,有多种接入方式

client_id=100001,这个参数的值是servcie注册的定义的,每个接入系统都分配一个值

redirect_uri=http://www.baidu.com 这个是认证通过后跳转的地址。我这个是示例,认证成功后,就跳转到百度。您需要修改成您的接入系统

输入mysql数据库中的用户名和密码后,会跳到一个授信页面,如下

点击allow后会跳到百度的页面,并可以在地址栏拿到授权码,页面如下

最后可以拿着授权码去获取access_token,访问如下

https://cas.example.org:8443/cas/oauth2.0/accessToken?grant_type=authorization_code&client_id=100001&client_secret=100001abcdeft&code=OC-2-3M6BedCz7TLIz0rpJUm-uLzPoFBbPOO0&redirect_uri=http://www.baidu.com

可以得到

access_token=AT-1-53AfGdKA2mL5IbI1iP29n6HlXcWL3Q5b&expires_in=28800

此时整个认证完成。

根据需求通过access_token拿到用户信息或者解析access_token拿到信息

cas这里可以调用https://cas.example.org:8443/cas/oauth2.0/profile?access_token=AT-2-Gy0WHJoMBa8JEOgkl0iW-LoYVotzXb4p

拿到信息

{"service" : "http://www.baidu.com","attributes" : {"credentialType" : "UsernamePasswordCredential"},"id" : "admin","client_id" : "100001"
}

CAS5.3版本的部署和使用相关推荐

  1. openstack安装newton版本keyston部署(一)

    openstack安装newton版本keyston部署(一) 一.部署环境:     两台centos7,  内存2G 控制计算节点: Hostname1:                    i ...

  2. 【DevOps】灰度发布与蓝绿部署:生产环境中推出新版本的部署策略

    灰度发布和蓝绿部署是两种常见的部署策略,用于在生产环境中推出新版本,减少影响和风险.今天呢,田辛老师将详细介绍灰度发布和蓝绿部署的原理.优缺点以及举例说明实际操作的步骤. 1 灰度发布 1.1 原理 ...

  3. JavaWEB四:在IDEA(21.1版本)下部署Tomcat8

    Tomcat8 概述 服务器架构模式 CS:客户端服务器架构模式 优点:充分利用客户端机器的资源,减轻服务器的负荷 缺点:需要安装客户端,升级维护成本较高 BS:浏览器服务器架构模式 优点:不需要安装 ...

  4. YOLOv5在最新OpenVINO 2021R02版本的部署与代码演示详解

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转载自:OpenCV学堂 YOLOv5在OpenVINO上的部 ...

  5. MySQL部署2002_MySQL入门02-MySQL二进制版本快速部署

    在上篇文章 MySQL入门01-MySQL源码安装 中,我们介绍了MySQL源码安装的方法. 源码安装虽然有着更加灵活和更加优化等诸多优势.但源码编译安装部署的过程相对复杂,而且整个过程所花费的时间很 ...

  6. 怎么使用starwind部署iscsi_2019 年总结 - 多环境多版本的部署

    自己几乎经历了部署演进的所有阶段,手动部署.自动部署,部署到服务器.部署到容器.我们也在不断演进并追赶行业前沿的技术/理念.保守估计今年可以基本追赶到行业前沿的最低水平. 工作中经历了部署语言的多样化 ...

  7. eclipse--eclipse(JavaEE版本)部署Tomcat工程(转)

    介绍如何在eclipse(JavaEE版本)中部署Tomcat工程, 转自"http://www.cnblogs.com/chenjunbiao/archive/2011/12/09/228 ...

  8. docker image设置jdk版本_Docker 部署 Spring Boot

    作者:云天 镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 一.Docker 简介 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容 ...

  9. 企业微信会话存档功能的推出背景,版本,部署方式

    会话存档推出的背景 会话存档最开始推出的使用对象为金融企业,金融从业人员的工作沟通合规监管日趋严格,2018年1月,"一行三会"联合发布<关于规范债券市场参与者债券交易业务的 ...

最新文章

  1. Windows核心编程 第四章 进程(下)
  2. 【Linux 内核 内存管理】优化内存屏障 ③ ( 编译器屏障 | 禁止 / 开启内核抢占 与 方法保护临界区 | preempt_disable 禁止内核抢占源码 | 开启内核抢占源码 )
  3. linux 无响应_系统加固之Linux安全加固
  4. JSP直接调用一个action定向到页面
  5. 2021Java面试题汇总,最常见的面试题都在这里
  6. 请慎用ASP.Net的validateRequest=false属性
  7. 【转】@JsonAlias和@JsonProperty注解使用详解
  8. 深度学习图像分类(三): VggNet
  9. Gephi教程-根据邻接矩阵构建复杂网络有向图
  10. 修改Office 2016安装路径的方法
  11. Unity 集成admob 出错AAPT: error :unexpected element <queries> found in <manifest>
  12. 怎么美化Typora的标题格式
  13. App逆向|一个案例教你如何进行APP逆向
  14. springboot中使用thymeleaf片段引入出现500错误(易错)
  15. c语言调用pdf文档,使用PDFLib生成PDF文档方法介绍(C语言版)
  16. 如何在windows11系统中打开ie11浏览网页
  17. linux sht11驱动,SHT11.h下载 温湿度传感器SHT11的驱动程序,提供了外界调用接口函数...
  18. Matlab利用牛顿迭代法求解非线性方程组
  19. 计算机网络知识梳理总结(For 考研复试面试)
  20. 程序员:工作8年,存款100W,回老家买两套房子,网友:醒醒吧

热门文章

  1. 华熙旭辉强强联手 升级京城文体地标 共绘文体商业版图
  2. range函数python三个参数_python3.5如何使用range函数
  3. Tornado初见(一)
  4. Tornado自定义路由
  5. HTMLsection标签怎么用?
  6. ArcFace: Additive Angular Margin Loss for Deep Face Recognition 论文学习
  7. 【从零开始玩量化5】Python程序获取同花顺问财数据
  8. Docker环境下Laravel SQLSTATE[HY000] [2002] Connection refused
  9. 酷特智能携手锐捷无线打造可以“复制”的智慧工厂
  10. 谷歌本周发布全新线性时间序列预测模型,再次反超Transformer