• Spring Security 集成 Authing CAS 认证(三)


    在上一篇文章《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
        
            net.unicon.cas
            cas-client-autoconfig-support
            2.3.0-GA
        
    
        
        
            cn.hutool
            hutool-all
            5.7.11
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    其中,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 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;
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行项目

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

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

    
      
        用户名
        
          2021-07-20T10:04:14.044Z
          false
          
          
            
            
          
          false
          U
          false
          https://files.authing.co/authing-console/default-user-avatar.png
          60a5e57cfaa50e4850dd12b0
        
      
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

    
      Ticket 不存在
    
    
    • 1
    • 2
    • 3

    关于 Authing

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

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

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

  • 相关阅读:
    swiper 增加一个鼠标移入分页器的小点后就切换展示图片
    Spring中使用RabbitMQ
    【CASS精品教程】cass3d基于osgb根据点、线、面提取高程,生成等高线
    Python异常
    Debian11之基于kubeadm安装K8S集群
    PyCharm中 python 类型文件被识别为Text文本类型
    SQL 教程之 10 个 SQL 操作用于 80% 的数据操作
    alsa pcm接口之pcm设备的状态STATE
    【kyuubi k8s】kyuubi发布k8s执行spark sql
    制造企业如何借数字化能力进军万亿国际市场?
  • 原文地址:https://blog.csdn.net/Authing/article/details/126751817