我正在尝试使用JWKS端点提供公共密钥来验证JWT签名。在我的sent
中,设置了以下内容:
\n
似乎确实正在使用它:
application.properties
在尝试向该应用程序中的端点发出请求时,它崩溃并显示为:
mp.jwt.verify.publickey.location = http://localhost:1080/jwks
从此堆栈跟踪中我所了解的最好的是,2019-08-17 18:02:28,593 DEBUG [io.sma.jwt.con.JWTAuthContextInfoProvider] (executor-thread-1) init, mpJwtPublicKey=NONE, mpJwtIssuer=NONE, mpJwtLocation=http://localhost:1080/jwks
2019-08-17 18:02:28,599 DEBUG [io.sma.jwt.aut.AbstractBearerTokenExtractor] (executor-thread-1) tokenHeaderName = Authorization
2019-08-17 18:02:28,643 DEBUG [io.qua.sma.jwt.run.aut.JwtIdentityManager] (executor-thread-1) verify, id=null, credential=io.quarkus.smallrye.jwt.runtime.auth.JWTCredential@780ca7ed
2019-08-17 18:02:28,719 DEBUG [io.sma.jwt.aut.pri.KeyLocationResolver] (executor-thread-1) Trying location as JWK(S)...
可能是一个问题?我没有其他要继续的事情,因为我可以确定这个JWT是有效的,因为我是生成它的人,并且可以通过其他应用进行验证。
我无权将其他字段/值添加到此JWT,因为我不拥有身份验证系统。我有什么办法可以解决这个问题?
答案 0 :(得分:1)
来自IssValidator
的NPE建议您可能会遇到此https://bitbucket.org/b_c/jose4j/issues/135/issvalidator-throws-nullpointerexception,这意味着您的令牌需要发布者iss
声明,或者JWT使用者不需要设置为要求{{ 1}}通过不使用构建器上的任何iss
方法来声明。