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