src/main/java/cn/pzhu/pserson/util/TokenUtils.java
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
package cn.pzhu.pserson.util;
import org.jose4j.jwk.RsaJsonWebKey;
import org.jose4j.jwk.RsaJwkGenerator;
import org.jose4j.jws.AlgorithmIdentifiers;
import org.jose4j.jws.JsonWebSignature;
import org.jose4j.jwt.JwtClaims;
import org.jose4j.jwt.consumer.InvalidJwtException;
import org.jose4j.jwt.consumer.JwtConsumer;
import org.jose4j.jwt.consumer.JwtConsumerBuilder;
import org.jose4j.lang.JoseException;
public class TokenUtils {
private static RsaJsonWebKey rsaJsonWebKey;
// 生成密钥
static {
try {
rsaJsonWebKey = RsaJwkGenerator.generateJwk(2048);
} catch (JoseException e) {
e.printStackTrace();
}
}
/**
* @param issuer 发行者
* @param audience 接收者
* @param exprationTime 接受时间
* @param notBeforeMinutesInThePast 过去有效时间
*/
public static String create(String keyID, String issuer, String audience, String subject,
int exprationTime, int notBeforeMinutesInThePast) throws JoseException {
// key
rsaJsonWebKey.setKeyId(keyID);
//
JwtClaims claims = new JwtClaims();
claims.setIssuer(issuer);
claims.setAudience(audience);
// 过期时间设置为30分钟
claims.setExpirationTimeMinutesInTheFuture(30);
claims.setGeneratedJwtId();
claims.setIssuedAtToNow();
claims.setSubject(subject);
claims.setNotBeforeMinutesInThePast(notBeforeMinutesInThePast);
JsonWebSignature jws = new JsonWebSignature();
jws.setPayload(claims.toJson());
jws.setKey(rsaJsonWebKey.getPrivateKey());
jws.setKeyIdHeaderValue(rsaJsonWebKey.getKeyId());
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256);
String jwt = jws.getCompactSerialization();
return jwt;
}
后面还有 40 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。