Java 在aws lambda函数上验证使用ES256签名的JWT签名时出错

Java 在aws lambda函数上验证使用ES256签名的JWT签名时出错,java,jwt,aws-lambda,jose4j,Java,Jwt,Aws Lambda,Jose4j,我移植了一个工作的java代码,用于验证使用SHA-2ES256私钥的椭圆曲线数字签名(ECDSA)签名的JWT 以下异常(如果我理解正确的话)表明底层运行时平台不支持ES256 我很惊讶,因为AWS Lambda在最新的Java8OpenJDK上工作,而且我认为加密技术是预先安装的 我错过了什么 这是JOSE4J中的一个bug吗?AWS Lambda基础设施的限制 Caused by: org.jose4j.lang.UnresolvableKeyException: Unable to fi

我移植了一个工作的java代码,用于验证使用SHA-2ES256私钥的椭圆曲线数字签名(ECDSA)签名的JWT

以下异常(如果我理解正确的话)表明底层运行时平台不支持ES256

我很惊讶,因为AWS Lambda在最新的Java8OpenJDK上工作,而且我认为加密技术是预先安装的

我错过了什么

这是JOSE4J中的一个bug吗?AWS Lambda基础设施的限制

Caused by: org.jose4j.lang.UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {"kid":"staging_0","alg":"ES256"} due to an unexpected exception (org.jose4j.lang.InvalidAlgorithmException: ES256 is an unknown, unsupported or unavailable alg algorithm (not one of [none, HS256, HS384, HS512, RS256, RS384, RS512]).) selecting from keys: [org.jose4j.jwk.EllipticCurveJsonWebKey{kty=EC, kid=staging_0, x=jz84fmrLuG5T9cnT-ydQdGjqk2iX2PsVYIcABTkXiqc, y=6oGYrjWEjhUSea5q7izitbcp5o7QlkArnm49OA0cPlI, crv=P-256}, org.jose4j.jwk.EllipticCurveJsonWebKey{kty=EC, kid=prod_0, x=cd5u73HnAueI1mgjuk9JSvU0ekonRCafffwaG-_D5VM, y=QjOMm1fqw3Aevkzzd-RVmlcmGMwPS9uajFN4nLnTwFc, crv=P-256}]
at org.jose4j.keys.resolvers.JwksVerificationKeyResolver.resolveKey(JwksVerificationKeyResolver.java:54)
at org.jose4j.jwt.consumer.JwtConsumer.processContext(JwtConsumer.java:190)
... 6 more
Caused by: org.jose4j.lang.InvalidAlgorithmException: ES256 is an unknown, unsupported or unavailable alg algorithm (not one of [none, HS256, HS384, HS512, RS256, RS384, RS512]).
at org.jose4j.jwa.AlgorithmFactory.getAlgorithm(AlgorithmFactory.java:51)
at org.jose4j.jws.JsonWebSignature.getAlgorithm(JsonWebSignature.java:142)
at org.jose4j.jws.JsonWebSignature.getAlgorithm(JsonWebSignature.java:35)
at org.jose4j.jwk.SelectorSupport.commonFilterForInbound(SelectorSupport.java:49)
at org.jose4j.jwk.VerificationJwkSelector.selectList(VerificationJwkSelector.java:39)
at org.jose4j.jwk.VerificationJwkSelector.select(VerificationJwkSelector.java:33)
at org.jose4j.keys.resolvers.JwksVerificationKeyResolver.resolveKey(JwksVerificationKeyResolver.java:47)
... 7 more

当jose4j初始化它的
算法工厂
(s)时,基本上在第一次使用时,它会尝试询问底层JVM及其JCA提供者,以确定各种算法的可用性。异常消息表明ECDSA算法在平台上不可用-特别是对于
ES256
Signature.getInstance(“SHA256withECDSA”)
返回空值,或者其他东西无法正确获取
签名
实例。因此,似乎在AWS Lambda的Java上没有ECDSA