forked from fanruan/demo-function-defender
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.
46 lines
1.5 KiB
46 lines
1.5 KiB
package com.fr.security.function.signature; |
|
|
|
import com.fr.cert.token.JwtBuilder; |
|
import com.fr.cert.token.Jwts; |
|
import com.fr.cert.token.SignatureAlgorithm; |
|
import com.fr.general.GeneralUtils; |
|
import com.fr.script.AbstractFunction; |
|
import com.fr.security.function.conf.RemoteEvalConfig; |
|
import com.fr.stable.ArrayUtils; |
|
import com.fr.stable.Primitive; |
|
|
|
import java.util.Date; |
|
|
|
/** |
|
* @author richie |
|
* @version 10.0 |
|
* Created by richie on 2019-01-14 |
|
*/ |
|
public class SignatureGenerator extends AbstractFunction { |
|
|
|
private static final long VALIDATE_TIME = 10 * 60 * 1000; |
|
@Override |
|
public Object run(Object[] args) { |
|
if (ArrayUtils.isEmpty(args)) { |
|
return Primitive.NULL; |
|
} |
|
return createJwt(GeneralUtils.objectToString(args[0]), RemoteEvalConfig.getInstance().getSignatureText()); |
|
} |
|
|
|
private String createJwt(String subject, String key) { |
|
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; |
|
Date currentTime = new Date(); |
|
Date expirationTime = new Date(currentTime.getTime() + VALIDATE_TIME); |
|
JwtBuilder builder = Jwts.builder() |
|
.setSubject(subject) |
|
.setIssuedAt(currentTime) |
|
.setExpiration(expirationTime) |
|
.signWith(signatureAlgorithm, key); |
|
return builder.compact(); |
|
} |
|
|
|
public static void main(String... args) { |
|
SignatureGenerator generator = new SignatureGenerator(); |
|
System.out.println(generator.createJwt("/习题9.cpt", "GhzUsb4fmGwmSk57d3uBZ9jVFCRgZ9CVMT3WoomMHi4=")); |
|
} |
|
}
|
|
|