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

2020-11-20 14:19:08 浏览数 (1)

之前我们已经可以使用工具类生成公钥和私钥了。因为我们现在的项目是分布式的项目,所以重新创建一个子项目,在这个子项目里面写我们生成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_keyid_key_rsa.pub
    priKeyFile: D:auth_keyid_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)

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

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

0 人点赞