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

时间:2016-04-10 13:04:20

标签: java jwt aws-lambda jose4j

我移植了一个工作的java代码,用于使用带有SHA-2 ES256私钥的Elliptic Curve数字签名(ECDSA)对JWT进行身份验证。

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

我很惊讶,因为AWS Lambda在最近的Java 8 open jdk上工作,我认为加密是预先安装的。

我错过了什么?

这是JOSE4J中的错误吗? AWS Lambda基础架构的限制?

$uQuery = mysql_query('SELECT * FROM `users` WHERE `user_id` = '.$_SESSION['user']) or die(mysql_error());
$userRow = mysql_fetch_array($uQuery);

1 个答案:

答案 0 :(得分:0)

当jose4j初始化它的AlgorithmFactory(s)时,基本上在第一次使用时,它会尝试使用其JCA提供程序询问底层JVM,以确定各种算法的可用性。异常消息表明ECDSA算法无法从平台获得 - 特别是ES256Signature.getInstance("SHA256withECDSA")返回null或其他东西没有正确获取Signature实例。因此,似乎EACSA在AWS Lambda的Java上不可用。