替换函数执行逻辑。
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

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