首先我们介绍一下工具 auth-java
auth-java 采用 tlv 序列化生成和jwt 一样的token ,但是auth-java 生成的token 长度可以比 jwt 长度缩小了一半
通过 tlv序列化即可以压缩数据,又可以去掉key的序列化
例如jwt 加密的内容 {“key1”:“value1”,“key2”:“value2”…} 然后把整个JSON字符串进行加密,从而导致整token长度变长
auth-java 采用 TLV 序列化 value1value2… 然后进行加密这种方式加密出来的数据 + 签名 比jwt 的token 长度减少一半
引入jar
maven jar
<dependency>
<groupId>com.github.fashionbrot</groupId>
<artifactId>auth-java</artifactId>
<version>0.0.3</version>
</dependency>
gradle jar
implementation 'com.github.fashionbrot:auth-java:0.0.3'
示例代码:https://github.com/fashionbrot/auth/tree/master/auth-java-example
token 加密使用 com.github.fashionbrot.util.AuthUtil
权限认证 使用 com.github.fashionbrot.util.PermissionUtil
auth-java示例
public class HMAC256Test {
private static final String secret = "+f+KCxF5UVl+O1a+sfafasfs/IDlfkadasfDfsuVXbMp5M8bOvqj1VEmGoB7IEn+";
@Test
public void test(){
Date date=new Date();
HMAC256Request auth = new HMAC256Request();
auth.setIssuedAt(date);
auth.setExpiresAt(addHours(date,1));
auth.setUserId(12L);
auth.setMobile("18888888888");
String token = AuthUtil.encryptHMAC256(secret, auth);
System.out.println("token:"+token);
HMAC256Request verify = AuthUtil.decryptHMAC256(secret,HMAC256Request.class, token);
System.out.println("result:"+verify.toString());
}
@Test
public void test2(){
Date date=new Date();
HMAC256Request auth = new