mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
修复JWTSignerUtil.createSigner中algorithmId未转换问题(issue#3806@Github)
This commit is contained in:
parent
eebb94c636
commit
32331c2b23
@ -23,6 +23,7 @@ import java.security.Key;
|
|||||||
import java.security.KeyPair;
|
import java.security.KeyPair;
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JWT签名器工具类
|
* JWT签名器工具类
|
||||||
@ -32,6 +33,8 @@ import java.security.PublicKey;
|
|||||||
*/
|
*/
|
||||||
public class JWTSignerUtil {
|
public class JWTSignerUtil {
|
||||||
|
|
||||||
|
private static final Pattern ES_ALGORITHM_PATTERN = Pattern.compile("es\\d{3}", Pattern.CASE_INSENSITIVE);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 无签名
|
* 无签名
|
||||||
*
|
*
|
||||||
@ -267,12 +270,13 @@ public class JWTSignerUtil {
|
|||||||
return none();
|
return none();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String algorithm = AlgorithmUtil.getAlgorithm(algorithmId);
|
||||||
// issue3205@Github
|
// issue3205@Github
|
||||||
if(ReUtil.isMatch("es\\d{3}", algorithmId.toLowerCase())){
|
if(ReUtil.isMatch(ES_ALGORITHM_PATTERN, algorithmId)){
|
||||||
return new EllipticCurveJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), keyPair);
|
return new EllipticCurveJWTSigner(algorithm, keyPair);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new AsymmetricJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), keyPair);
|
return new AsymmetricJWTSigner(algorithm, keyPair);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -288,14 +292,16 @@ public class JWTSignerUtil {
|
|||||||
if (null == algorithmId || NoneJWTSigner.ID_NONE.equals(algorithmId)) {
|
if (null == algorithmId || NoneJWTSigner.ID_NONE.equals(algorithmId)) {
|
||||||
return NoneJWTSigner.NONE;
|
return NoneJWTSigner.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String algorithm = AlgorithmUtil.getAlgorithm(algorithmId);
|
||||||
if (key instanceof PrivateKey || key instanceof PublicKey) {
|
if (key instanceof PrivateKey || key instanceof PublicKey) {
|
||||||
// issue3205@Github
|
// issue3205@Github
|
||||||
if(ReUtil.isMatch("ES\\d{3}", algorithmId)){
|
if(ReUtil.isMatch(ES_ALGORITHM_PATTERN, algorithmId)){
|
||||||
return new EllipticCurveJWTSigner(algorithmId, key);
|
return new EllipticCurveJWTSigner(algorithm, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new AsymmetricJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), key);
|
return new AsymmetricJWTSigner(algorithm, key);
|
||||||
}
|
}
|
||||||
return new HMacJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), key);
|
return new HMacJWTSigner(algorithm, key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user