T31训练营-DAY25用户系统实现笔记

前言

分享令牌颁发实战。

引入依赖

<!--oauth2--> 
<dependency> 
<groupId>org.springframework.cloud</groupId> 
<artifactId>spring-cloud-starter-oauth2</artifactId> 
</dependency>

拷贝密钥到项目resource下。

生成令牌

//证书⽂件 
String key_location = "kaikeba.jks"; 
//密钥库密码 
String keystore_password = "kaikeba"; 
//访问证书路径 
ClassPathResource resource = new ClassPathResource(key_location); 
//密钥⼯⼚ 
KeyStoreKeyFactory keyStoreKeyFactory = new KeyStoreKeyFactory(resource, keystore_password.toCharArray()); 
//密钥的密码,此密码和别名要匹配 
String keypassword = "kaikeba"; 
//密钥别名 
String alias = "kaikeba"; 
//密钥对(密钥和公钥) 
KeyPair keyPair = keyStoreKeyFactory.getKeyPair(alias, keypassword.toCharArray()); 
//私钥 
RSAPrivateKey aPrivate = (RSAPrivateKey) keyPair.getPrivate(); 
//定义payload信息 
Map<String, Object> tokenMap = new HashMap<String, Object>(); 
tokenMap.put("id", "123"); 
tokenMap.put("name", "malong"); 
tokenMap.put("roles", "r01,r02"); 
tokenMap.put("ext", "1"); 
//⽣成jwt令牌 
Jwt jwt = JwtHelper.encode(new ObjectMapper().writeValueAsString(tokenMap), new RsaSigner(aPrivate)); 
//取出jwt令牌 
String token = jwt.getEncoded(); System.out.println(token);

验证令牌

//jwt令牌 
String token ="生成的令牌";
//公钥
String publickey ="公钥";

Jwt jwt = JwtHelper.decodeAndVerify(token, new RsaVerifier(publickey)); 
//获取jwt原始内容 
String claims = jwt.getClaims(); 
System.out.println(claims); 
try {
Map<String, String> map = new ObjectMapper().readValue(claims, Map.class); System.out.println(map.get("user_name")); 
} catch (IOException e) 
{ e.printStackTrace(); 
} 
}

总结

大概分享了生成与验证令牌,平时项目使用配合security即可实现授权鉴权模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值