之前我们已经可以使用工具类生成公钥和私钥了。因为我们现在的项目是分布式的项目,所以重新创建一个子项目,在这个子项目里面写我们生成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)
这个的意思就是加载对应的配置类
以上就是搭建完成环境,这个项目里面就可以生成公钥和私钥了。