Ошибка проверки подписи JWT, подписанной с ES256 в лямбда-функции aws

Я портировал рабочий код Java для аутентификации JWT, подписанного с помощью цифровых подписей эллиптических кривых (ECDSA) с закрытым ключом SHA-2 ES256.

Следующее исключение, если я правильно понимаю, предполагает, что базовая платформа времени выполнения не поддерживает ES256.

Я удивлен, потому что AWS Lambda работает на недавнем Java 8 open jdk, и я думал, что криптография была предустановлена.

Что мне не хватает?

Это ошибка в JOSE4J? Ограничение инфраструктуры 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

1 ответ

Когда jose4j инициализирует это AlgorithmFactory(s), в основном при первом использовании, он пытается опросить базовую JVM со своими поставщиками JCA, чтобы определить доступность различных алгоритмов. Сообщение об исключении предполагает, что алгоритмы ECDSA не были доступны с платформы - специально для ES256, Signature.getInstance("SHA256withECDSA") вернулся ноль или что-то еще не получилось получить Signature пример. Таким образом, похоже, что ECDSA недоступна на Java AWS Lambda.

Другие вопросы по тегам