前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot整合springsecurity框架,在项目里面集成生成公钥和私钥的代码(分布式项目)(四)

springboot整合springsecurity框架,在项目里面集成生成公钥和私钥的代码(分布式项目)(四)

作者头像
一写代码就开心
发布2020-11-20 14:19:08
6400
发布2020-11-20 14:19:08
举报
文章被收录于专栏:java和pythonjava和python

之前我们已经可以使用工具类生成公钥和私钥了。因为我们现在的项目是分布式的项目,所以重新创建一个子项目,在这个子项目里面写我们生成token的代码

以下就是生成的子项目

先添加依赖

代码语言:javascript
复制
  <parent>
        <artifactId>springboot_security_jwt_rsa_parent</artifactId>
        <groupId>com.itheima</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>heima_auth_server</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>com.itheima</groupId>
            <artifactId>heima_common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
    </dependencies>

写yml配置文件

代码语言:javascript
复制
server:
  port: 9001
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/security?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    username: root
    password: '123456'
mybatis:
  type-aliases-package: com.itheima.domain
  configuration:
    map-underscore-to-camel-case: true
logging:
  level:
    com.itheima: debug
rsa:
  key:
    pubKeyFile: D:\auth_key\id_key_rsa.pub
    priKeyFile: D:\auth_key\id_key_rsa

如果我们的项目里面使用了jsp,还需要在yml配置里面写视图解析器,前缀和后缀。

但是现在的项目是分布式的项目,是前后端分离的项目,所以我们不使用jsp页面,所以不用写视图解析器。

在yml里面还要写公钥和私钥的路径,方便以后修改

既然我们在yml里面定义了自己的配置,在项目里面要获取yml里面的自定义的配置,之前已经讲过

springboot系列学习(六)yml文件的学习(小白必看)

现在我们获取到只是yml里面配置的路径,但是我们要的是路径下面的文件,所以我们可以在这个配置类里面再添加一个方法,获取到这个路径下的私钥和公钥,也就是将私钥和公钥加载到项目里面

可以用这个方法

@PostConstruct 这个注解的意思是,在配置里面 的路径加载完成之后,再执行这个方法

代码语言:javascript
复制
    @PostConstruct  在对象构造完成之后执行下面的方法
    public void createRsaKey() throws Exception {
        publicKey = RsaUtils.getPublicKey(pubKeyFile);
        privateKey = RsaUtils.getPrivateKey(priKeyFile);
    }

以上方法里面就是利用工具类获取私钥和公钥。这个配置类里面的全部的代码是

代码语言:javascript
复制
@ConfigurationProperties("rsa.key")
public class RsaKeyProperties {

    private String pubKeyFile;
    private String priKeyFile;

    private PublicKey publicKey;
    private PrivateKey privateKey;

    @PostConstruct
    public void createRsaKey() throws Exception {
        publicKey = RsaUtils.getPublicKey(pubKeyFile);
        privateKey = RsaUtils.getPrivateKey(priKeyFile);
    }

    public String getPubKeyFile() {
        return pubKeyFile;
    }

    public void setPubKeyFile(String pubKeyFile) {
        this.pubKeyFile = pubKeyFile;
    }

    public String getPriKeyFile() {
        return priKeyFile;
    }

    public void setPriKeyFile(String priKeyFile) {
        this.priKeyFile = priKeyFile;
    }

    public PublicKey getPublicKey() {
        return publicKey;
    }

    public void setPublicKey(PublicKey publicKey) {
        this.publicKey = publicKey;
    }

    public PrivateKey getPrivateKey() {
        return privateKey;
    }

    public void setPrivateKey(PrivateKey privateKey) {
        this.privateKey = privateKey;
    }
}

以上的配置类还没有放到ioc容器里面,所以我们现在要做的就是在项目一启动 的时候,就将这个配置类放到容器里面

写一个启动类

代码语言:javascript
复制
@SpringBootApplication
@MapperScan("com.itheima.mapper")
@EnableConfigurationProperties(RsaKeyProperties.class)
public class AuthServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(AuthServerApplication.class, args);
    }
}

@EnableConfigurationProperties(RsaKeyProperties.class)

这个的意思就是加载对应的配置类

以上就是搭建完成环境,这个项目里面就可以生成公钥和私钥了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档