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