cas-5.3.x接入REST登录认证,移动端登录解决方案
一、部署cas-server及cas-sample-java-webapp
1、克隆cas-overlay-template项目并切换到5.3分支
git clone git@github.com:apereo/cas-overlay-template.git
或直接下载zip包 https://github.com/apereo/cas-overlay-template/archive/5.3.zip
2、编辑pom.xml添加cas-server-support-rest依赖,即新增如下XML片段:
<dependencies>
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-rest</artifactId>
<version>${cas.version}</version>
</dependency>
</dependencies>
3、执行maven打包命令 mvn clean package 构建war包
mvn clean package
4、解压cas.war修改配置文件,完成cas-server部署
- 修改 \WEB-INF\classes\services\HTTPSandIMAPS-10000001.json,将"serviceId"修改为"^(https|http|imaps)://.*",修改后的内容如下:
{
"@class" : "org.apereo.cas.services.RegexRegisteredService",
"serviceId" : "^(https|http|imaps)://.*",
"name" : "HTTPS and IMAPS",
"id" : 10000001,
"description" : "This service definition authorizes all application urls that support HTTPS and IMAPS protocols.",
"evaluationOrder" : 10000
}
- 修改 \WEB-INF\classes\application.properties,新增cas.tgc.secure和cas.serviceRegistry.initFromJson配置
cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
- 修改 \WEB-INF\classes\application.properties,cas.authn.accept.users配置,修改默认账户为admin/123456
cas.authn.accept.users=admin::123456
启动tomcat
5、部署cas-sample-java-webapp,这里我们部署上下文为demo,访问http://192.168.36.158:8080/demo发现跳至CAS登录页面
CAS官方java客户端demo项目地址:https://github.com/cas-projects/cas-sample-java-webapp
网络不佳的同学请使用这个备份地址下载:https://files.cnblogs.com/files/nihaorz/cas-sample-java-webapp-master.zip
执行mvn clean package打成war包,解压war包修改web.xml中cas服务端以及demo程序自身访问地址,部署至tomcat,此处应用上下文修改为demo,访问/demo

常规情况是输入账户密码完成登录,下面我们使用REST完成登录
二、使用REST获取ST完成客户端登录
1、发送POST请求一,获取TGT,请求地址/cas/v1/tickets,请求响应头中的Location即包含CAS服务器返回的TGT
curl -i -X POST \
http://cas.gfstack.geo:8080/cas/v1/tickets \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'username=admin&password=123456'
返回如下:
HTTP/1.1
Cache-Control: no-cache, no-store, max-age=, must-revalidate
Pragma: no-cache
Expires:
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: ; mode=block
Location: http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-24-92zYMWlqhJLKwdrZlzo3lVYGNP2J5ZpRYy1Zvg8ePO-qUvotV1qy-uUmm22-njz1QkAtes-cas-server
Content-Type: text/html;charset=UTF-
Content-Length:
Date: Wed, Feb :: GMT <!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\"><html><head><title>201 Created</title></head><body><h1>TGT Created</h1><form action="http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-24-92zYMWlqhJLKwdrZlzo3lVYGNP2J5ZpRYy1Zvg8ePO-qUvotV1qy-uUmm22-njz1QkAtes-cas-server" method="POST">Service:<input type="text" name="service" value=""><br><input type="submit" value="Submit"></form></body></html>
或者直接使用postman获取到返回头中的Location

2、发送POST请求二,获取ST,直接使用请求一中返回的Location作为请求地址,service参数为客户端地址
curl -X POST \
http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-31-hDZZ7-FyHALeny6rV4WgI9rdiSUf5FIFs91oHOf4PO2-nPJB2ndRb6BLLlaqDNvt6Zotes-cas-server \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'service=http%3A%2F%2F192.168.36.158%3A8080%2Fdemo%2F'
返回如下:
ST--CKL6FVwjJevI3gG61rW5QD9iKZItes-cas-server
注意,此处的service是经过URLEncoder编码之后的客户端地址,客户端地址必须以“/”结尾,这里的service原值为“http://192.168.36.158:8080/demo/”
如果是postman则会自动完成编码,如下图所示

3、校验ST,访问http://192.168.36.158:8080/demo?ticket={ST}完成登录

4、退出,发送DELETE请求,请求地址还是第六步中的Location
curl -X DELETE \
http://cas.gfstack.geo:8080/cas/v1/tickets/TGT-32-RzWUHSRvvQIWpsYn3YdRYcyf40Aa1qCf2Y-RFIqsAVkv-PGAJjd0LLyLVLa5TuaoBx0tes-cas-server
5、刷新浏览器,发现页面跳至cas登录页面则表示cas客户端退出成功

cas-5.3.x接入REST登录认证,移动端登录解决方案的更多相关文章
- Ajax跨域请求action方法,无法传递及接收cookie信息(应用于系统登录认证及退出)解决方案
最近的项目中涉及到了应用ajax请求后台系统登录,身份认证失败,经过不断的调试终于找到解决方案. 应用场景: 项目测试环境:前端应用HTML,js,jQuery ajax请求,部署在Apache服务器 ...
- 判断是pc端登录还是移动端登录
java判断 https://blog.csdn.net/qq_32657581/article/details/71405838 https://zhidao.baidu.com/question/ ...
- Asp.Net MVC3.0网站统计登录认证的在线人数
Asp.Net MVC3.0网站统计登录认证的在线人数 前言 对于一个网站来说,统计在线人数是一个很重要的工作.平时也发现很多的网站论坛等都有在线人数的显示.对于一个网站如果在线人数很多,用户看到了这 ...
- 基于SpringBoot搭建应用开发框架(二) —— 登录认证
零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...
- CAS 单点登录4.24版本 登录调用其它系统并且返回客户端用其它的用户信息改造
1.登录调用其它系统.修改deployerConfigContext.xml <?xml version="1.0" encoding="UTF-8"?& ...
- 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125
最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...
- 【项目实践】一文带你搞定Session和JWT的登录认证方式
以项目驱动学习,以实践检验真知 前言 登录认证,估计是所有系统中最常见的功能了,并且也是最基础.最重要的功能.为了做好这一块而诞生了许多安全框架,比如最常见的Shiro.Spring Security ...
- DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配
DRF接入Oauth2.0认证[微博登录]报错21322重定向地址不匹配 主题自带了微博登陆接口,很简单的去新浪微博开放平台创建了网页应用,然后把APP ID和 AppSecret填好后,以为大功告成 ...
- React Native 接入微博、微信、QQ 登录功能
在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手 ...
- cas sso单点登录系列7_ 单点登录cas常见问题系列汇总
转:http://blog.csdn.net/matthewei6/article/details/50709252 单点登录cas常见问题(一) - 子系统是否还要做session处理?单点登录ca ...
随机推荐
- python异常处理的哲学
所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...
- [Vue] vue2.0
vue实例 所有的 Vue 组件都是 Vue 实例,并且接受相同的选项对象 当一个 Vue 实例被创建时,它将 data 对象中的所有的属性加入到 Vue 的响应式系统中.当这些属性的值发生改变时,视 ...
- Recording and playing back data
Recording and playing back data This tutorial will teach you how to record data from a running ROS s ...
- 学JAVA第十六 天,JAVA多态
今天老师讲了多态的使用 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点: 1. 消除类型之间的耦合关系 2. 可替换性 3. 可扩充性 4. 接口性 5. 灵活性 6. 简化性 我个 ...
- Poj1799
Yeehaa! Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15082 Accepted: 6675 Descript ...
- 代理模式 PROXY Surrogate 结构型 设计模式(十四)
代理模式 PROXY 别名Surrogate 意图 为其他的对象提供一种代理以控制对这个对象的访问. 代理模式含义比较清晰,就是中间人,中介公司,经纪人... 在计算机程序中,代理就表示一个客户端不想 ...
- 关于Android Studio 3.2 运行应用时提示 “Instant Run requires that the platform corresponding to your target device (Android 7.0 (Nougat)) is installed.” 的说明
点击"Run",运行App后,Android Studio显示如图1-1界面: 图1-1 这是因为你连接的外部设备(比如Android手机或AVD)的SDK版本在你的电脑上没有安装 ...
- 搭建Linux虚拟服务器
1.搭建Linux虚拟机环境安装VMware Workstation 14下载地址:https://www.cr173.com/soft/68480.html密钥:FF31K-AHZD1-H8ETZ- ...
- linux子系统折腾记 (二)
今天一早起床,打开debian,居然出现 错误: 0x80070040 .不知道是怎么回事,网上有篇文章详细介绍了windows linux子系统,打算参考来做做:https://www.jiansh ...
- MyDAL - .IsExistAsync() 使用
索引: 目录索引 一.API 列表 .IsExistAsync() 用于 单表 / 多表连接 查询 二.API 单表-便捷 方法 举例 1.单表-便捷, 判断是否存在方法 var date = Dat ...