分享令牌颁发实战。
引入依赖org.springframework.cloud spring-cloud-starter-oauth2
拷贝密钥到项目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验证令牌tokenMap = new HashMap (); 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 map = new ObjectMapper().readValue(claims, Map.class); System.out.println(map.get("user_name"));
} catch (IOException e)
{ e.printStackTrace();
}
}
总结
大概分享了生成与验证令牌,平时项目使用配合security即可实现授权鉴权模块。



