Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用JWTTokenValidator验证Okta令牌时面临问题_Spring Boot_Jwt_Okta Api - Fatal编程技术网

Spring boot 使用JWTTokenValidator验证Okta令牌时面临问题

Spring boot 使用JWTTokenValidator验证Okta令牌时面临问题,spring-boot,jwt,okta-api,Spring Boot,Jwt,Okta Api,我在使用JWTTokenValidator验证Okta令牌时遇到了一个问题 对于ex代币是:eDue41r18EPlCG8JwTAxYAv15jfInh$$$$9hf6H6XBZYSradVOSk9A7wvwB3oJT mlXT&&&&&ORWA3SIRFZCKUNOUKIA*dyvlx0BQutl3YYdfuBzk4OlhqNlump 案例1:如果我在这里更改大于g的最后一个字符,则Jwt验证获得成功(即意外结果) 案例2:如果我更改的最后一个字符小于g,则Jwt验证失败(即正确验证) Okt

我在使用JWTTokenValidator验证Okta令牌时遇到了一个问题

对于ex代币是:eDue41r18EPlCG8JwTAxYAv15jfInh$$$$9hf6H6XBZYSradVOSk9A7wvwB3oJT mlXT&&&&&ORWA3SIRFZCKUNOUKIA*dyvlx0BQutl3YYdfuBzk4OlhqNlump

案例1:如果我在这里更改大于g的最后一个字符,则Jwt验证获得成功(即意外结果)

案例2:如果我更改的最后一个字符小于g,则Jwt验证失败(即正确验证)

Okta jwt验证程序版本:“0.5.0”

我找到了两个答案:

a

b

针对上述解决方案提出的问题(b) 此解决方案表明它是特定于算法的 --如果这是特定于算法的,那么我们如何最终确定要使用的算法,以及未来新算法的出现是否会影响我们的算法? --为什么这不是通用的? 期望:
案例1和案例2的验证均应失败。i、 e如果我替换令牌中的任何字符,则验证将失败

这是否回答了您的问题@jps根据您在关于上述链接中给出的答案,我们是说Okta令牌的验证/验证完全依赖于
Base64
编码吗?如果是,那么在
HS384
HS512
HS25
或不久的将来可能推出的其他产品中,哪一种最好&为什么?我们怎么能说使用Okta令牌的应用程序(不用担心,比如最后2位来自填充)是完全安全的?@OO7 Okta令牌的验证/验证完全依赖于Base64编码-JWT的签名恰好是Base64Url编码的,除此之外,我不知道验证如何依赖于编码。验证取决于匹配的签名(即匹配的x字节长散列值)。这些值是Base64Url还是十六进制,或者标记中编码的任何值都不相关。对于有关信息安全的问题,姐妹站点可能比堆栈溢出更合适。谢谢@jps回复我的查询。正如您所建议的,OP可以在中提出这个问题,以了解更多有关安全性的信息。(b)此解决方案建议它是特定于算法的,请再次阅读,它基本上取决于签名的长度。如果以位为单位的长度(始终是8的倍数)可以被6除而不带余数,那么在末尾就不会有任何不重要的位。简单的数学。为什么这是一个如此大的问题?当base64编码的签名被解码时,您会得到一个x字节长的二进制值,这才是最重要的。