问题标签 [jjwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
271 浏览

java - 使用 jjwt 刷新 JWT 令牌

最近我在 SpringBoot 和 Kotlin 中开始了我的项目,我想创建用户管理系统。经过几次搜索后,我查看了有关在身份验证过程中实施 JWT 令牌的视频

除了目前我需要在每次身份验证中传递用户名和密码这一事实之外,一切似乎都运行良好——这意味着调用 API 的客户端需要存储它或每次都要求它。

在查看这篇文章之后,似乎选项 3 实际上是我正在寻找的。据我了解,身份验证过程应如下所示:

  • 客户端调用身份验证方法
  • 返回 2 个令牌 - 1 个周期较短,即身份验证令牌,一个周期较长,允许更新身份验证令牌。
  • 一旦身份验证令牌过期,客户端将只使用那些没有用户原始详细信息的令牌来更新过期的令牌。

在这方面我有两个问题:

  1. 从安全的角度来看 - 如果黑客“抓住”这两个令牌会发生什么?这基本上意味着黑客从现在开始可以毫无问题地以该用户身份进行身份验证 - 不是吗?
  2. 据我所知,更多或实现问题jjwt不支持此功能(因为只要令牌未过期,我就可以从令牌中读取信息)。从我的搜索中,我找不到可以“开箱即用”的东西 - 是否有一个标准可以在功能上实现这一点?
0 投票
0 回答
22 浏览

spring-boot - Spring security:jwt中的Http安全方法

我正在尝试实现 jwt 登录示例

在为安全类配置配置方法时,我遇到了一些问题

这是控制器的方法

这里我有http配置版本

显然我已经允许登录 api 作为 permitall,但它仍然适用于过滤器,任何人都可以解释到底发生了什么

过滤代码

根据我的学习,如果我在 http 配置中允许作为 permitall,它不应该进入过滤器代码。如果我错了,请纠正我。

0 投票
0 回答
37 浏览

angular - Angular Springboot JWT:无法映射请求

我正在按照本教程学习基于角色的身份验证

我收到未经授权的错误

在此处输入图像描述

但在后端我没有收到该请求,添加为断点

前端请求应该进入控制器,但似乎我在没有进入控制器的情况下得到响应。

任何人都可以帮助解决可能的原因。

配置方法

登录时点击 onLogin(user: any){ console.log("this.user"+this.user);

}

用户服务

}

0 投票
1 回答
37 浏览

java - jjwt 的更新版本在 maven 存储库中不可用

Maven repo 上可用的最新版本是 0.9.1。然而 github 显示了过去两年的活动和发布,每个 github 的最新版本是 0.11.1。向 Maven 发布版本的政策是否发生了变化?还是发生在不同的时间表上?

谢谢帕特马来

0 投票
1 回答
83 浏览

spring-boot - 无法从线程上下文、当前或系统/应用程序加载名为 [io.jsonwebtoken.io.JacksonSerializer] 的类

我从邮递员登录到 spring-boot 应用程序时收到此错误消息。我使用 JWT webtoken 进行身份验证和授权。请帮助解决这个问题。

0 投票
1 回答
1497 浏览

spring-boot - 在 Springboot 2.2.6 中找不到 jwt 依赖项

我正在尝试在 pom.xml 中添加 jwt,但 jwt 依赖项不可用。

有没有人有同样的经历?

我将使用 Jwtbuilder 进行安全设置。

Springboot 是 2.2.6,我正在使用 Maven。

请帮我。

谢谢。

在此处输入图像描述

0 投票
1 回答
1037 浏览

java - 如何从 .key 文件加载私钥

我想从 .key 文件加载 PrivateKey 并使用它来生成 jwt 令牌。我有以下方法来生成令牌

loadPrivateKey 方法如下所示:

在我得到的编译java.io.IOException: Invalid keystore format at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:663) at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56) at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224) at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)

我不明白,因为我正在打开 PKCS8 私钥。有人知道如何解决这个问题吗?

0 投票
0 回答
54 浏览

generics - 为什么看似无关代码的更改有助于 kotlin 推断类型变量

以下代码为jjwt 库定义了一个SigningKeyResolverAdapter

kotlin 编译失败并出现以下错误:

无法在 var 中推断类型参数 T!>

JwsHeader.keyId:字符串!以下替换均无

接收者:JwsHeader 参数:()

接收器:JwsHeader!> 参数:()接收器:

JwsHeader 参数:() 接收者:

JwsHeader!> 参数:() 接收者:

JwsHeader!>!> 参数:() 接收者:

JwsHeader!> arguments: () 可以

应用于接收者:JwsHeader<*> 参数:()

当线

keyRetriever.getPublicKey(header.keyId)

改为

keyRetriever.getPublicKey(header["kid"] as String)

一切正常。

我不明白为什么这种变化会有所作为。header.keyId 也返回一个字符串。

0 投票
0 回答
103 浏览

spring - Springboot security+JWT refresh token

I have an Angular app with Spring boot as backend. I have implemented Spring security with JWT authentication. The workflow is as follows

  1. Angular will call a create token end point which will return a JWT token
  2. Client will use this token for any subsequent api calls.
  3. There is a filter in the backend which will parse the token and if it is valid, will allow the user to proceed further

My question is related to refresh token. Let's say the expiry of the token is 15 minutes. If the user is logged in, I want the session to be active by generating a refresh token and send it back to the angular app. What is the best way of doing this?

I am not using OAUTH here, just jjwt library and spring security starter.

0 投票
1 回答
3019 浏览

java - 无法初始化类 io.jsonwebtoken.SignatureAlgorithm,java.lang.NoClassDefFoundError,

在 Spring Boot 应用程序中使用 jjwt 在 REST API 中进行基于令牌的身份验证。它在我的本地环境中工作正常,但是当我在 tomcat 中部署战争时,它给出了异常 - 无法初始化类 io.jsonwebtoken.SignatureAlgorithm。SignatureAlgorithm 类在 jar 中,但仍然给出 java.lang.NoClassDefFoundError 错误。

努力在 tomcat 中部署它并开始工作。在这里需要帮助来解决问题。快速帮助将不胜感激。

pom.xml

智威汤逊实用程序

智威汤逊控制器

tomcat中的jar文件

日志-

java.lang.NoClassDefFoundError: 无法在 com.telstra.util.JwtTokenUtil.doGenerateToken(JwtTokenUtil.java:66) ~[classes/:0.0.1-SNAPSHOT] 在 com.telstra.util 初始化类 io.jsonwebtoken.SignatureAlgorithm。 JwtTokenUtil.generateTokenbyUser(JwtTokenUtil.java:60) ~[classes/:0.0.1-SNAPSHOT] at com.telstra.psbc.controller.JwtAuthenticationController.createAuthenticationToken(JwtAuthenticationController.java:45) ~[classes/:0.0.1-SNAPSHOT ] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201] 在 sun.reflect.DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201] 在 org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.web。 method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod .invokeAndHandle(ServletInvocableHandlerMethod.java:97) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter. java:827) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter。handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85 ) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) ~[spring-webmvc-4.3.13. RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkServlet.java:872)~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[servlet-api.jar:na] 在 org.springframework.web.servlet.FrameworkServlet.service( FrameworkServlet.java:846) ~[spring-webmvc-4.3.13.RELEASE.jar:4.3.13.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[servlet-api.jar :na] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-websocket.jar:9.0.31] at org.apache.catalina.core .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) [ spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317) ~[spring-security -web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-4.2. 3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-4.2.3.RELEASE.jar:4.2 .3.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org .springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web。 FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter .java:137) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security -web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-4.2.3. RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3 .RELEASE] 在 org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework .security.web。FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter .java:63) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[ spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at com.telstra.psbc.JwtRequestFilter.doFilterInternal(JwtRequestFilter.java:66) ~[classes/:0.0.1-SNAPSHOT] at org .springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:331)〜[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]在org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)〜[弹簧-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2. 3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64) ~[spring-security-web-4.2.3.RELEASE.jar:4.2 .3.RELEASE] 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.security。 web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-4.2.3.RELEASE.jar:4.2 .3.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org .springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework。 web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain。doFilter(FilterChainProxy.java:331) ~[spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214) ~ [spring-security-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177) ~[spring-security-web-4.2. 3.RELEASE.jar:4.2.3.RELEASE] 在 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE ] 在 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain .internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] 在 org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~ [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar :4.3.13.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:166) [catalina.jar:9.0.31] 在 org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108) ~[spring-web-4.3.13.RELEASE.jar:4.3.13。RELEASE] 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain .internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] 在 org.springframework .web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter. java:107) [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.31] 在 org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) ~ [spring-web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.3.13.RELEASE.jar :4.3.13.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:166) [catalina.jar:9.0.31] 在 org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:115) [spring-boot-1.5.9.RELEASE.jar:1.5.9 .RELEASE] 在组织。springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:59) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org.springframework.boot.web.support.ErrorPageFilter $1.doFilterInternal(ErrorPageFilter.java:90) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring -web-4.3.13.RELEASE.jar:4.3.13.RELEASE] 在 org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108) [spring-boot-1.5.9.RELEASE.jar :1.5.9.RELEASE] 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.31] 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain. java:166) [catalina.jar:9.0.31] 在 org.apache。catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) [catalina.jar:9.0.31] 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.31 ] 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) [catalina.jar:9.0.31] 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina .jar:9.0.31] 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.31] 在 org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve. java:688) [catalina.jar:9.0.31] 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.31] 在 org.apache.catalina.connector。郊狼适配器。服务(CoyoteAdapter.java:343)[catalina.jar:9.0.31] 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367) [tomcat-coyote.jar:9.0.31] 在 org. apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) [tomcat-coyote.jar:9.0.31] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) [tomcat-coyote.jar :9.0.31] 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639) [tomcat-coyote.jar:9.0.31] 在 org.apache.tomcat.util.net。 SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.31] 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201] 在 java.util。 concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201] 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.31] 在 java.lang.Thread.run(Thread.java:748 ) [na:1.8.0_201]