JSD-9008 请求鉴权(SM3 + JWT)
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.
 
 

48 lines
1.7 KiB

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"));
}
}