RUOYI-Cloud-3.4.0-cas

ruoyi-cloud框架集成cas及权限管理

背景:

        单位要求借着新开发系统的机会,整合单点登录,新系统是基于ruoyi-cloud的,需在ruoyi-cloud中集成cas,于是冲浪了一段时间,发现有一些gitee和github有一些现成的,如gitee上唐雁的项目 唐雁 / ruoyi-cloud-cas,果断拉下来,但拉下来之后发现有一定问题,由于他的项目是采用ruoyi-cloud-2.5.0的项目,调通之后发现有一定问题(如:无法完成跳转,登录之后admin没有权限),主要原因有nacos版本不匹配,gateway无法从nacos拿到白名单,可能他改过权限,也有可能是2.4.0的原因(没有使用过以前的版本),admin登录无权限,于时参考唐雁老师的项目,以及博客ruoyi-cloud开源框架集成cas,集成了cas,但是博客中也有一些问题,以及描述不够详细,下文的很多方法,来自于该博客及项目。

仓库地址: https://gitee.com/yong-liu/ruoyi-cloud-cas

我的环境

nacos   2.0.4

tomcat  9.0.38

jdk    1.8.0_161

vue 3

ruoyi-cloud  3.4.0

整体逻辑及认证步骤,上文提到的博客秒速的非常详细,这里整体引用一下

整体逻辑

CAS为对通过认证的用户分配ticket,通过发放ticket对用户进行管理,而ruoyi-cloud的认证及权限的管理则是依靠ticket完成的。所有解决问的核心逻辑:

1、cas对访问ruoyi-cloud但不持有ticket的用户进行拦截,用户需在cas进行认证。

2、用户在cas完成认证后,在ruoyi-cloud后端自动为用户生产token,全过程对用户无感知。

3、完成1、2两步之后,用户即持有老系统的ticket,又持有ruoyi-cloud的token。

具体cas集成认证步骤

如下图所示

从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:

 1、cas配置

第一步:生成秘钥库

我们采用JDK自带的keytool工具生成秘钥库

别名 java1234 存储路径 D:\cas\keystore

keytool -genkey -v -alias java1234 -keyalg RSA -keystore D:\cas\keystore\java1234.keystore

这里需要填写一些信息,注意填写要域名;

秘钥库密码我们用 666666

执行完,会生成一个秘钥库文件;

 

第二步:从秘钥库里导出证书

keytool -export -trustcacerts  -alias java1234 -file D:/cas/keystore/java1234.cer  -keystore D:/cas/keystore/java1234.keystore

输入第一步的秘钥库密码 666

 即可生成证书;

证书文件;

第三步:将证书导入到JDK证书库

keytool -import -trustcacerts -alias java1234 -file D:/cas/keystore/java1234.cer -keystore "E:/jdk1.8/jre/lib/security/cacerts"

 

密码: changeit

 

第四步:tomcat配置https支持

这里我们采用tomcat9

找到tomcat->conf->server.xml 打开文件

加下如下配置即可;

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" 

                keystoreFile="D:\cas\keystore\java1234.keystore"

                keystorePass="666666" />

启动bin下的startup.bat

(默认有中文乱码,可以我们来到tomcat目录的conf子目录中,找到一个名为 "logging.properties" 的文件,打开这个文本文件,找到如下配置项:

java.util.logging.ConsoleHandler.encoding = UTF-8

将 UTF-8 修改为 GBK,修改后的效果为:

java.util.logging.ConsoleHandler.encoding = GBK

保存后,重启tomcat!) 

 第五步:测试

访问 https://localhost:8443

把war包放tomcat下,启动tomcat会自动解压,我们把名称改成cas,方便访问;

注意点:日志修改

 

访问:https://localhost:8443/cas

cas  8443端口

配置hosts: C:\Windows\System32\drivers\etc

127.0.0.1   java1234.com

通过域名访问:

https://java1234.com:8443/cas

用户名:casuser

密码:Mellon

修改cas账号密码为admin,admin123否则后文整合ruoyi-cloud的时候,auth模块无法从,数据库拿到权限信息及角色信息。

修改写死的认证用户,cas的application.properties中

cas.authn.accept.users=admin::admin123

此外发现在application.properties中配置了如下配置,忘了干嘛的了,如果不行可以加上去试试

cas.tgc.secure=false
cas.serviceRegistry.initFromJson=true
cas.serviceRegistry.json.location=classpath:/services

此文不论证连接数据库做sso,连接数据库查询,只需要在本文的基础上,cas配置数据库,并修改若依修改密码,添加用户的密码加密方式即可(MD5),若依不做密码验证。

此外为了支持客户端http访问到cas,修改cas目录下的\WEB-INF\classes\services\HTTPSandIMAPS-10000001.json文件,在serviceId中加入http 

 就此cas配置完成(未配置数据库及密码加密方式)

2、后端修改

        拉取RUOYI-Cloud-3.4.0,运行nacos,项目正常启动后,继续下面的步骤

        注意,项目的jdk必须选中为上面cas配置的jdk,否则会报错(控制台auth模块报错证书验证不通过),可以在项目结构中修改 

nacos中ruoyi-gateway-dev.yml,配置白名单

  ignore:
    whites:
      - /auth/logout
      - /auth/login
      - /auth/register
      - /*/v2/api-docs
      - /csrf
      - /auth/casLogin
      - /auth/TokenLogout

核心代码

auth模块添加pom依赖

         <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-cas</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

添加相应文件

<
### RuoYi-Cloud 中 `ruoyi-file` 模块的相关信息 #### 文件存储功能概述 `ruoyi-file` 是 RuoYi-Cloud 项目中的一个重要模块,主要用于处理文件上传、下载以及管理等功能。该模块支持多种文件存储方式,包括本地磁盘、阿里云OSS、腾讯云COS等。 #### 配置说明 为了使 `ruoyi-file` 正常工作,在项目的配置文件 application.yml 或者 application.properties 中需要设置相应的参数来指定使用的文件存储策略[^1]: 对于 YAML 格式的配置如下所示: ```yaml file: type: qiniu # 存储类型:local(本地),minio,qiniu,aliyun,tencent domain: http://cdn.domain.com/ # 域名前缀 path: /profile # 保存路径 ``` 如果采用 properties 方式,则应按照下面的形式书写: ```properties file.type=qiniu file.domain=http://cdn.domain.com/ file.path=/profile ``` #### 添加子模块流程 当向 RuoYi-Cloud 项目中增加新的子模块时,可以参照已有的 `ruoyi-modules-system` 的 pom 文件创建一个新的 POM 文件,并调整其中的 artifactId 和其他必要属性以适应新加入的功能需求。 另外需要注意的是,在根目录下的 ruoyi-module/pom.xml 文件里也要相应地注册这个新增加的 module 节点,例如 `<module>ruoyi-test</module>` 这样的形式[^2]。 #### 扩展与维护提示 针对某些特定场景下可能涉及到对第三方库版本更新的需求,比如更换 spring-boot-admin-server-ui 版本的情况,可以通过重新编译并替换旧版 JAR 包的方式来实现自定义化定制[^3]。
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值