CAS5.3使用JPA实现动态注册服务

cas同时支持cas协议和OAuth2协议,官方默认是通过扫描json文件的形式注册客户端服务,但是此种方式需要重启服务才能生效,此次我们将使用JPA来完美实现动态注册服务,如果不知道cas如何部署,可以擦看之前的文章

cas-client基于CAS协议客户端搭建-CSDN博客

cas-server5.3自定义密码校验规则_cas-server 自定义加密验证-CSDN博客

CAS服务端的搭建并配置OAtuh2.0协议_cas oauth2.0-CSDN博客

添加pom依赖

<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-support-jpa-service-registry</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-core-services-api</artifactId>
    <version>${cas.version}</version>
</dependency>
<dependency>
    <groupId>org.apereo.cas</groupId>
    <artifactId>cas-server-core-authentication-attributes</artifactId>
    <version>${cas.version}</version>
</dependency>

添加配置

#数据库用户名
cas.serviceRegistry.jpa.user=root
#数据库密码
cas.serviceRegistry.jpa.password=root
#mysql驱动
cas.serviceRegistry.jpa.driverClass=com.mysql.cj.jdbc.Driver
#数据库连接
cas.serviceRegistry.jpa.url=jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
cas.serviceRegistry.jpa.dialect=org.hibernate.dialect.MySQL5Dialect
#连接池配置
cas.serviceRegistry.jpa.pool.suspension=false
cas.serviceRegistry.jpa.pool.minSize=6
cas.serviceRegistry.jpa.pool.maxSize=18
cas.serviceRegistry.jpa.pool.maxWait=2000
cas.serviceRegistry.jpa.pool.timeoutMillis=1000
#默认为create-drop,表示每次启动服务都会清除你之前注册的cas服务
cas.serviceRegistry.jpa.ddlAuto=update

第一次启动需要将cas.serviceRegistry.jpa.ddlAuto设置为create-drop,启动后会创建如下表结构

 编写逻辑

@RestController
@RequestMapping
public class RegistrationServiceController {

    @Autowired
    @Qualifier("servicesManager")
    private ServicesManager servicesManager;

    @Autowired
    private RegexregisteredserviceService regexregisteredserviceService;


    @GetMapping("/addOAuth")
    public void addOAuthClient(@RequestParam("serviceId") String serviceId,
                               @RequestParam("clientId") String clientId,
                               @RequestParam("clientSecret") String clientSecret,
                               @RequestParam("name")String name) {
        OAuthRegisteredService service = new OAuthRegisteredService();
        ReturnAllAttributeReleasePolicy re = new ReturnAllAttributeReleasePolicy();
        service.setClientId(clientId);
        service.setClientSecret(clientSecret);
        service.setServiceId(serviceId);
        service.setAttributeReleasePolicy(re);
        service.setName(name);
        servicesManager.save(service);
        // 执行load让他生效
        servicesManager.load();
    }

    @GetMapping("/addCas")
    public void addOAuthClient(@RequestParam("serviceId") String serviceId,
                               @RequestParam("name")String name) {
        RegexRegisteredService service = new RegexRegisteredService();
        ReturnAllAttributeReleasePolicy re = new ReturnAllAttributeReleasePolicy();
        service.setServiceId(serviceId);
        service.setAttributeReleasePolicy(re);
        service.setName(name);
        servicesManager.save(service);
        // 执行load让他生效
        servicesManager.load();
    }

    @GetMapping("/deleteService")
    public void deleteServiceClient(@RequestParam("id") String id) {
        regexregisteredserviceService.removeById(id);
        // 执行load让他生效
        servicesManager.load();
    }

可以看到这个controller中最主要的就是ServicesManager 这个Bean,可以看一下它的源码,这里提供了对于服务操作的实现,这里我们主要用到的是load方法,其作用是当我们增加或删除一个服务后执行load()方法会使我们的修改生效,可以理解为是一个刷新的操作

其中这不分的参数,可以参考  resources.services下的json文件的参数来添加,

注意:添加cas服务使用到的是RegexRegisteredService,添加OAuth2服务使用到的是OAuthRegisteredService,不然数据库里的expression_type是区分不出来类型的

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CAS(Central Authentication Service)是一种为大型网络环境提供单点登录功能的开源软件。CAS Cookie是CAS系统中用于维持用户会话状态的一种身份验证机制。 CAS提供了一个统一的身份验证服务,允许用户在成功登录到一个应用程序后,在访问其他受信任的应用程序时不需要再次输入用户名和密码。这个被授权的会话状态是通过CAS Cookie来保持的。 CAS Cookie是一个存储在用户浏览器中的小型文件,由CAS服务器发送给用户在登录后,用于在用户在同一个网页应用程序中未注销的情况下保持其登录状态。CAS Cookie包含了用户的身份验证信息和有效期等相关信息。 当用户在访问其他需要身份验证的受信任应用程序时,CAS服务器会检查用户是否已经登录。如果用户已经登录并存在有效的CAS Cookie,CAS服务器将使用该Cookie中的用户信息来验证用户身份,并允许用户继续访问受保护的资源。如果用户未登录或CAS Cookie已失效,CAS服务器将要求用户重新输入用户名和密码进行身份验证。 使用CAS Cookie带来了便利性和安全性之间的平衡。它方便用户在不同应用程序之间的无缝切换,避免了频繁输入登录凭证的麻烦。同时,CAS Cookie的有效期限制了用户会话的持续时间,提高了系统安全性,减少了恶意攻击的风险。 总之,CAS Cookie是CAS系统中的一种身份验证机制,通过在浏览器中存储会话状态信息,实现了单点登录的功能。它既方便了用户的使用体验,同时又提高了系统的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值