我要在quarkus中创建一个are服务,并希望生成令牌来验证我的端点中的用户(用户位于JDBC中)。我不会使用其他服务,比如keycloak。只有夸克斯和我的正面(vuejs)。
我试着在夸克中生成记号。我该怎么做呢?我正在做这样的事情...
`@ApplicationScoped
public class JwtGen {
public void gen() {
String token =
Jwt.upn("arthur")
.groups(new HashSet<>(Arrays.asList("User")))
.sign();
System.out.println(token);
}
}`
我创建了一个linemp.jwt.verify.publickey.location=publicKey.pem,并在application.propperties中创建了一个publicKey.pem
编辑: My application.properties
quarkus.http.cors=true
quarkus.http.cors.origins=*
quarkus.smallrye-jwt.enabled=true
mp.jwt.verify.publickey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlivFI8qB4D0y2jy0CfEqFyy46R0o7S8TKpsx5xbHKoU1VWg6QkQm+ntyIv1p4kE1sPEQO73+HY8+Bzs75XwRTYL1BmR1w8J5hmjVWjc6R2BTBGAYRPFRhor3kpM6ni2SPmNNhurEAHw7TaqszP5eUF/F9+KEBWkwVta+PZ37bwqSE4sCb1soZFrVz/UT/LF4tYpuVYt3YbqToZ3pZOZ9AX2o1GCG3xwOjkc4x0W7ezbQZdC9iftPxVHR8irOijJRRjcPDtA6vPKpzLl6CyYnsIYPd99ltwxTHjr3npfv/3Lw50bAkbT4HeLFxTx4flEoZLKO/g0bAoV2uqBhkA9xnQIDAQAB
mp.jwt.decrypt.key.location=privateKey.pem
mp.jwt.verify.issuer=https://example.com/issuer这是日志错误
io.smallrye.jwt.build.JwtSignatureException: SRJWT05009:
at io.smallrye.jwt.build.impl.JwtSignatureImpl.sign(JwtSignatureImpl.java:77)
at br.com.infralog.JwtGen.gen(JwtGen.java:17)
at br.com.infralog.JwtGen_Subclass.gen$$superforward1(JwtGen_Subclass.zig:89)
at br.com.infralog.JwtGen_Subclass$$function$$6.apply(JwtGen_Subclass$$function$$6.zig:24)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(InvocationInterceptor_Bean.zig:521)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
at br.com.infralog.JwtGen_Subclass.gen(JwtGen_Subclass.zig:145)
at br.com.infralog.JwtGen_ClientProxy.gen(JwtGen_ClientProxy.zig:126)
at br.com.infralog.webservice.StateWsResource.list(StateWsResource.java:58)
at br.com.infralog.webservice.StateWsResource_Subclass.list$$superforward1(StateWsResource_Subclass.zig:324)
at br.com.infralog.webservice.StateWsResource_Subclass$$function$$27.apply(StateWsResource_Subclass$$function$$27.zig:53)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.proceed(AroundInvokeInvocationContext.java:54)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.proceed(InvocationInterceptor.java:62)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor.monitor(InvocationInterceptor.java:49)
at io.quarkus.arc.runtime.devconsole.InvocationInterceptor_Bean.intercept(InvocationInterceptor_Bean.zig:521)
at io.quarkus.arc.impl.InterceptorInvocation.invoke(InterceptorInvocation.java:41)
at io.quarkus.arc.impl.AroundInvokeInvocationContext.perform(AroundInvokeInvocationContext.java:41)
at io.quarkus.arc.impl.InvocationContexts.performAroundInvoke(InvocationContexts.java:32)
at br.com.infralog.webservice.StateWsResource_Subclass.list(StateWsResource_Subclass.zig:556)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:170)
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:130)
at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:660)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:524)
at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:474)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:476)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:434)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:408)
at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:69)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:492)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)
at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)
at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)
at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)
at io.quarkus.resteasy.runtime.standalone.RequestDispatcher.service(RequestDispatcher.java:73)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler.dispatch(VertxRequestHandler.java:138)
at io.quarkus.resteasy.runtime.standalone.VertxRequestHandler$1.run(VertxRequestHandler.java:93)
at io.quarkus.vertx.core.runtime.VertxCoreRecorder$14.runWith(VertxCoreRecorder.java:481)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2442)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1476)
at org.jboss.threads.DelegatingRunnable.run(DelegatingRunnable.java:29)
at org.jboss.threads.ThreadLocalResettingRunnable.run(ThreadLocalResettingRunnable.java:29)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:834)原因: java.lang.IllegalArgumentException: SRJWT05021:请在io.smallrye.jwt.build.impl.JwtSignatureImpl.sign(JwtSignatureImpl.java:72)的io.smallrye.jwt.build.impl.JwtSignatureImpl.getKeyLocationFromConfig(JwtSignatureImpl.java:187)处设置'smallrye.jwt.sign.key.location‘属性... 53更多信息
求求你我来这是为了一个软弱的..。请帮帮忙!!
发布于 2021-09-28 06:08:16
我认为答案就在异常消息中:
请设置“”smallrye.jwt.sign.key.location“”属性
因此,如果您还没有在application.properties中设置私钥,这可能会对您有所帮助。没有它,就不可能生成令牌。
这也可以在the documentation中找到:
要使此代码正常工作,我们需要与TokenSecuredResource应用程序中的公钥相对应的
私钥的内容。
这里还描述了如何配置和生成公钥和私钥。
https://stackoverflow.com/questions/69351570
复制相似问题