在上一篇文章《CAS 在 Authing 控制台配置 认证(二)》(以下简称《认证(二)》)中,我们讲述了如何在 Authing 平台配置项目集成中需要的 CAS 的配置,以及在后期开发过程中如何获取配置。同时,也提前让大家预习和熟悉了一些项目搭建和编码过程中需要的知识点。

接下来这一小节,就让我们一起来顺利完成项目搭建和编码过程吧!

01

项目搭建

使用 Spring Initializr 快速构建项目

打开 IDEA,点击 New Project 创建一个新项目,选择 Spring Initializr 创建一个 Spring Boot 项目,输入项目的 Group 以及 Artifact 信息。

集成过程中需要在 pom.xml 中添加一些其他的依赖包,如下:

org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat

    <dependency><groupId>net.unicon.cas</groupId><artifactId>cas-client-autoconfig-support</artifactId><version>2.3.0-GA</version></dependency><!--远程调用接口使用--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.11</version></dependency>
</dependencies>

其中,hutool 工具包的作用是远程调用接口,当收到回调请求时,会使用该工具包远程调用 CAS Service Ticket 的 serviceValidate 接口,检验端点的合法性,后续自动回调接口编码会使用到。

02

项目编码

配置项目中的文件

自动回调接口编码

在项目下新建一个 package,然后新建一个 CallBackController,此接口作用是通过 CAS 的 ticket 获取用户信息。注意,下面的参数 service,ticket 都是 Authing CAS 的标准,不能乱改,这也是标准协议的规定,service 参数所对应的值也就是之前在 Authing 平台应用所配置的那些。

package com.authing.cas.authingcas.controller;
import cn.hutool.http.HttpUtil;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
@Controller
public class CallbackController {
@GetMapping(value = "/", produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public String getTicket(String ticket) {
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("service", "http://localhost:9999/");
paramMap.put("ticket", ticket);
String result = HttpUtil.get("https://cjtjls-demo.authing.cn/cas-idp/61319680ea8b30c9ca9ca071/serviceValidate", paramMap);
return result;}
}

运行项目

一切准备就绪了,现在启动项目并访问 http://localhost:9999,即可看到 Authing 登录窗口。

接下来,可以输入用户名、密码来进行登录,查看登录后的结果。

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas"><cas:authenticationSuccess><cas:user>用户名</cas:user><cas:attributes><cas:authenticationDate>2021-07-20T10:04:14.044Z</cas:authenticationDate><cas:longTermAuthenticationRequestTokenUsed>false</cas:longTermAuthenticationRequestTokenUsed><cas:updated_at/><cas:address><cas:locality/><cas:street_address/></cas:address><cas:phone_number_verified>false</cas:phone_number_verified><cas:gender>U</cas:gender><cas:email_verified>false</cas:email_verified><cas:picture>https://files.authing.co/authing-console/default-user-avatar.png</cas:picture><cas:sub>60a5e57cfaa50e4850dd12b0</cas:sub></cas:attributes></cas:authenticationSuccess>
</cas:serviceResponse>

此外,Authing 还会保存用户的登录态,用户短时间内再次登录无需进行认证。另外,如果 ticket 验证失败,Authing 将返回格式如下的 xml 文档。

<cas:serviceResponse xmlns:cas="http://www.yale.edu/tp/cas"><cas:authenticationFailure code="INVALID_TICKET">Ticket 不存在</cas:authenticationFailure>
</cas:serviceResponse>

关于 Authing

Authing 是国内首款以开发者为中心的全场景身份云产品,为企业和开发者提供完善安全的用户认证和访问管理服务。作为云原生架构下的身份云产品,Authing 在产品创建初期,目标就是服务亿级的企业和个人开发者客户,轻量级、易部署、低消耗、技术栈成熟,运维易的云原生技术产品架构,成为了 Authing 的首选。

点击此处了解更多行业身份管理

「解决方案」以及「最佳实践案例」

Spring Security 集成 Authing CAS 认证(三)相关推荐

  1. Spring Security 集成 Authing CAS 认证(一)

    01 集成介绍 单点登录 (Single Sign On),英文名称缩写 SSO,意思是在多系统的环境中,登录单方系统,就可以无须再次登录,访问相关受信任的系统.也就是说,只要登录一次单体系统即可. ...

  2. Spring Security 集成 OIDC 项目编码 | 认证(三)

    在上一篇文章<OIDC 在 Authing 控制台的配置流程 | 认证(二)>中,我们讲述了如何在 Authing 平台配置项目集成中需要的 OIDC 的配置,以及在后期开发过程中如何获取 ...

  3. 如何用 Spring Security 集成 CAS 认证 (二)

    在上一篇文章< Spring Security 集成 Authing CAS 认证(一)>中,我们讲解了很多的基础知识和概念.同时,认证(一)中也讲述了什么是 CAS 协议.什么是单点登录 ...

  4. Spring Security使用数据库登录认证授权

    一.搭建项目环境 1.创建 RBAC五张表 RBAC,即基于角色的权限访问控制(Role-Based Access Control),就是用户通过角色与权限进行关联. 在这种模型中,用户与角色之间,角 ...

  5. Spring Security | 轻松搞定认证授权~

    文章目录 一.Spring Security 简介 二.整合 Spring Security 1.创建项目,导入依赖 2.创建数据库,搭建环境 3.配置数据库 4.创建实体类 5.实现 UserMap ...

  6. Spring security 集成 JustAuth 实现第三方授权登录

    Spring security 集成 JustAuth 实现第三方授权登录脚手架: 一.特性 spring security 集成 JustAuth 实现第三方授权登录 : 此项目从 用户管理脚手架( ...

  7. 详解Spring Security的formLogin登录认证模式

    详解Spring Security的formLogin登录认证模式 一.formLogin的应用场景 在本专栏之前的文章中,已经给大家介绍过Spring Security的HttpBasic模式,该模 ...

  8. Spring Security关于用户身份认证与授权

    Spring Security是用于解决认证与授权的框架. 创建spring项目,添加依赖 <!-- Spring Boot Security:处理认证与授权 --><depende ...

  9. Spring Security 学习之LDAP认证

    一.前言 LDAP:轻型目录访问协议,即Lightweight Directory Access Protocol (LDAP)是一个访问在线目录服务的协议,最典型例子的就是黄页.电话簿等,主要用于读 ...

最新文章

  1. 当年轻人开始谈论AI伦理
  2. html局部可复制,截取网页局部区域css样式的方法和系统的制作方法
  3. 如何破解无线路由器密码,如何破解WEP密码,破解无线路由器
  4. 遮挡摄像头 判断_长治一学校门口树枝遮挡信号灯,危险!
  5. 拨云见日—深入解析Oracle TX 行锁(上)
  6. 小型动漫知识图谱的构建 (Python+Neo4j) (纯实践内容,基于bilibili所有正版番剧的动漫、声优、角色、类型)
  7. MySQL Performance-Schema(二) 理论篇
  8. golang程序如何优雅地退出
  9. FMS3系列(六):使用远程共享对象(SharedObject)实现多人时时在线聊天(Flex | Flash)
  10. [css] z-index有时不起作用的原因是什么?怎么解决?
  11. HGE引擎适用于MFC的修改
  12. js实现sleep休眠
  13. DataTable.ImportRow()与DataTable.Rows.Add()的区别
  14. HTML 4.0 语 法 教 学
  15. 扫雷游戏网页版_两个在线版复古小游戏,嗯还是熟悉的味道!
  16. 远程关闭计算机提示拒绝访问权限,win7系统远程关机拒绝访问的解决方法
  17. 合取范式可满足性问题:CDCL(Conflict-Driven Clause Learning)算法详解
  18. 电脑各个硬件的理论知识 经典
  19. wamp5数据库密码修改
  20. Mysql+Echarts+Python+Flask实现前后端交互及数据可视化

热门文章

  1. HDCTF2023 WP
  2. mysql 表结构查询的SQL语句
  3. 单片机———LED灯(Proteus和KeilC51)
  4. 在硬盘留下后门,重装系统都没辙
  5. OCJP Oracle认证Java程序员考试题库分享
  6. uni-app弹窗 小程序弹窗
  7. 练手的70个超火python小项目,小编建议收藏哦,送你们玩
  8. 基于Java的公司考勤系统
  9. 客来乐:变革与升级,用技术点燃智慧时代
  10. 从 4 个面试题了解「浏览器的垃圾回收」