找不到签名密钥

时间:2019-08-12 12:58:47

标签: java jwt microprofile

使用http://jwtenizr.sh/生成jwt微配置文件配置。添加microprofile-config.properties文件与quarkus完美配合,但是当尝试使用openliberty时,出现以下错误:

CWWKS5523E:MicroProfile JWT功能无法验证请求,因为无法从请求中包含的令牌创建有效的JWT。 CWWKS6029E:由于找不到签名密钥,因此无法验证JSON Web令牌(JWT)。配置的签名算法[RS256]需要密钥来验证令牌。

我的server.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<server description="${project.artifactId}">

   <featureManager>
      <feature>mpJwt-1.1</feature>
      <feature>jaxrs-2.1</feature>
      <feature>cdi-2.0</feature>
      <feature>mpConfig-1.3</feature>
      <feature>mpOpenAPI-1.0</feature>
      <feature>appSecurity-2.0</feature>
   </featureManager>

   <httpEndpoint id="defaultHttpEndpoint"
      httpPort="${httpPort}" httpsPort="${httpsPort}" />

   <application location="${project.build.finalName}.war" />

   <logging traceSpecification="${log.name}.*=${log.level}" />

</server>

microprofile-config.properties

mp.jwt.verify.issuer=airhacks
mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgNSR7iZWlwOvJFyDFsva5XxUmRkBl3EjUn1OlV+jBj3LngKXBIujwAGCXYw+wr9JGJglmaOITqHtrow4j0T1wVGQF4cgN1o+FtcYyeDVsk+Ji3T3PaIIedgfzn1ufQUyWoeJAeROxmMOydImJeSe1o8VEP/ulvBAqq9IlJ2fw1Q521IE4geG5LywTSY/SdFo5zSs7sewNbZYKAguODEBQJNI85xe64mBwBKN2CKxVrwzq6plaVVBlityIcJLvh/pEXaBdnrEUXSfy4+Bf4jCIAUEV0O3GAR27fU5+tWdoHW0PIjjZ5W86D55JH+YWYOGQ06e+irLgHKxVNTIvpjE2QIDAQAB

我需要添加密钥库吗?如果是这样,为什么会要求这样做?

2 个答案:

答案 0 :(得分:0)

我不知道,为什么使用mp.jwt.verify.publickey字符串进行配置在OpenLiberty中不起作用。

无论如何,我设法使其以这种方式工作:

microprofile-config.properties

mp.jwt.verify.issuer=airhacks
mp.jwt.verify.publickey.location=/META-INF/public-key.pem

public-key.pem

-----BEGIN PUBLIC KEY-----
MIIBIj... <public key>
-----END PUBLIC KEY-----

答案 1 :(得分:0)

这确实很奇怪。我只是用以下方法进行了测试:

mp.jwt.verify.publickey = ----- BEGIN公钥----- MIIBIj ...----- END公钥-----

,并且有效。我不知道为什么要使用页眉/页脚声明。