You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
3 years ago
|
package com.fr.plugin.gzwauth.utils;
|
||
|
|
||
|
import com.nimbusds.jose.*;
|
||
|
import com.nimbusds.jose.crypto.MACSigner;
|
||
|
import com.nimbusds.jose.shaded.json.JSONObject;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.Map;
|
||
|
import java.util.UUID;
|
||
|
|
||
|
public class TokenUtil {
|
||
|
public static final JWSHeader header = new JWSHeader(JWSAlgorithm.HS256, JOSEObjectType.JWT, null, null, null, null, null, null, null, null, null, null, null);
|
||
|
|
||
|
/**
|
||
|
* 获取Token
|
||
|
* @param sysId 系统ID
|
||
|
* @param secretkey 密钥
|
||
|
* @return
|
||
|
*/
|
||
|
public static String getToken(String sysId, String secretkey){
|
||
|
Map<String, Object> payload = new HashMap();
|
||
|
payload.put("sid", sysId);
|
||
|
payload.put("iat", System.currentTimeMillis());
|
||
|
payload.put("rand", UUID.randomUUID());
|
||
|
String token = "";
|
||
|
try {
|
||
|
token = createToken(header, SM3Util.SM3Encode(Md5Util.getMD5(secretkey)).getBytes(), payload);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return token;
|
||
|
}
|
||
|
public static String createToken(JWSHeader header, byte[] SECRET, Map<String, Object> payload) {
|
||
|
String tokenString = null;
|
||
|
// 创建一个 JWS object
|
||
|
JWSObject jwsObject = new JWSObject(header, new Payload(new JSONObject(payload)));
|
||
|
try {
|
||
|
// 将jwsObject 进行HMAC签名
|
||
|
jwsObject.sign(new MACSigner(SECRET));
|
||
|
tokenString = jwsObject.serialize();
|
||
|
} catch (JOSEException e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
return tokenString;
|
||
|
}
|
||
|
public static void main(String[] args) {
|
||
|
System.out.println(getToken("1001","admin111111"));
|
||
|
}
|
||
|
}
|