jwt 相关问题

JSON Web Token(JWT,发音为“jot”)是一种新兴的基于令牌的身份验证,用于空间受限的环境,例如HTTP授权头。

为什么在身份验证中使用刷新令牌?它们不能像 JWT 一样被盗吗?

我正在使用 ASP.NET Web API 和 JWT 在我的应用程序中实现身份验证。我试图了解刷新令牌的目的,并对它们的好处和安全影响有一些疑问:...

回答 1 投票 0

Apple 登录/使用 django 和 flutter 登录问题 - invalid_client 响应

我在 Django + Flutter 应用程序中实现 Apple 登录/登录时遇到问题。这是我正在使用的流程: 在 Flutter 方面,我使用以下代码从 A 获取凭据...

回答 1 投票 0

如何使用 JWT 进行身份验证并接收用户对象(不同项目中的 API)?

我有两个 Symfony 7.1 项目 - 一个提供 API(名为“core” - 使用 API Platform v4 和 JWT Lexik Bundle),另一个是基于 Web 的前端来访问数据(名为“dashbo...

回答 1 投票 0

int io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()'在生成用于身份验证的令牌密钥时没有此类方法错误

大家好,我正在尝试使用 JJWT 生成用于验证用户身份的安全令牌。但出现这个错误。这是我的 pom.xml 文件: 大家好,我正在尝试使用 JJWT 生成用于验证用户身份的安全令牌。但出现这个错误。这是我的 pom.xml 文件: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>angular-spring-crud</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>angular-spring-crud</name> <description>Angular-Spring crud project</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project> 这是我在需要时生成令牌的方法 protected void successfulAuthentication(HttpServletRequest req, HttpServletResponse res, FilterChain chain, Authentication auth) throws IOException, ServletException { Date exp = new Date(System.currentTimeMillis() + EXPIRATION_TIME); Key key = Keys.hmacShaKeyFor(KEY.getBytes()); Claims claims = Jwts.claims().setSubject(((User) auth.getPrincipal()).getUsername()); String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, key).setExpiration(exp).compact(); res.addHeader("token", token); } 如何解决这个问题?我之前尝试过将 jjwt 的版本更改为 0.11.2,但遇到构建错误,找不到 jar 文件。 我的完整堆栈跟踪 java.lang.NoSuchMethodError: 'int io.jsonwebtoken.SignatureAlgorithm.getMinKeyLength()' at io.jsonwebtoken.security.Keys.hmacShaKeyFor(Keys.java:84) ~[jjwt-api-0.11.2.jar:0.11.2] at com.example.angularspringcrud.security.AuthenticationFilter.successfulAuthentication(AuthenticationFilter.java:53) ~[classes/:na] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:233) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:213) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5.6.1.jar:5.6.1] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.15.jar:5.3.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.15.jar:5.3.15] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.15.jar:5.3.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:895) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1732) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.56.jar:9.0.56] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na] 2022-01-29 16:55:37.395 DEBUG 14992 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for POST "/error", parameters={} 2022-01-29 16:55:37.395 DEBUG 14992 --- [nio-8080-exec-4] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest) 2022-01-29 16:55:37.396 DEBUG 14992 --- [nio-8080-exec-4] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json] 2022-01-29 16:55:37.396 DEBUG 14992 --- [nio-8080-exec-4] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{timestamp=Sat Jan 29 16:55:37 EET 2022, status=500, error=Internal Server Error, path=/login}] 2022-01-29 16:55:37.397 DEBUG 14992 --- [nio-8080-exec-4] o.s.web.servlet.DispatcherServlet : Exiting from "ERROR" dispatch, status 500 您没有实现正确的 io.jsonwebtoken 依赖项。 这些是您必须正确实现的三个依赖项; <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.11.2</version> </dependency> 我删除了最后一个依赖项,现在已修复。 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.9.1</version> 删除这个 并添加 <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.11.2</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.11.2</version> </dependency>

回答 2 投票 0

如何在 Django REST Framework 中跨多个 REST 服务实现 JWT 身份验证?

我最终将为这个项目提供多个微服务(计算、客户和其他)。 工作流程是:用户登录,获取 JWT,然后对

回答 1 投票 0

基于每个端点注入当前用户(从数据库加载)

在我们的应用程序中,我们使用 Quarkus 和 SmallRye JWT 扩展(请参阅此处)进行基于角色的 AuthN 和 AuthZ。 我们定义了一个注解CurrentUser: @预选赛 @Retention(注释Retention.

回答 1 投票 0

使用 JWT 令牌的 Azure AD 身份验证

我正在使用 ASP .NET core Web API (3.1)。我需要通过两种方式授权用户。首先是 SQL 身份(使用用户名和密码),其次是 Azure AD SSO 单租户(通过单击 Micr...

回答 1 投票 0

尽管自定义过滤器中的 JWT 身份验证成功,Spring Security 返回 403

我正在为我的应用程序使用 Spring Security 和 JWT 身份验证。我已经实现了一个自定义过滤器来验证 JWT 并在安全上下文中设置身份验证。然而,尽管...

回答 1 投票 0

从自定义 SSO 重定向后如何存储 httpOnly cookie?

上下文 有两种应用: 身份验证服务器 - 身份提供商 - 这是我的自定义 SSO 解决方案。 img-server - 服务提供商 - 这个应用程序有一些我想要的路线

回答 1 投票 0

在 traefik 中验证 JWT 令牌签名

我正在实现一个微服务架构,我有一个 oauth2 服务来进行身份验证并为我生成令牌。 我使用 Treafik 作为 API 网关 我如何验证 tok...

回答 1 投票 0

Spring WebFlux 安全服务器HttpSecurity

我正在使用 Spring WebFlux Security 并尝试绕过特定端点的令牌验证过滤器,例如 /auth/api/v1/cred/login/。尽管对该端点使用了 PermitAll() 方法...

回答 1 投票 0

如何使用存储的指纹防止 JWT 劫持?

我们的团队被要求防止 API 中的 JWT 劫持。我们的解决方案是将用户 IP 和用户代理的“指纹”存储在我们的数据库中,并在每个请求时验证它......

回答 1 投票 0

我如何使用 jwt 填充令牌并将其用于身份验证

我试图用cookies中的令牌验证用户,我在后端使用nodejs并用typescript做出反应,但我已经完成了所有操作,但仍然没有在cookies中找到令牌错误?有人可以帮忙吗...

回答 1 投票 0

使用 fetch 和 React 将授权标头和 JWT 令牌传递到后端时遇到问题

我正在学习一门课程,试图完成一个全栈项目,在尝试创建登录功能时,我在两个方面遇到了麻烦:使用...将我的授权请求标头发送到后端

回答 1 投票 0

JWT 令牌返回 NULL .NET API 登录

尝试生成 JWT 令牌到 API 响应以进行登录,但它返回 null, 这是一个标准的 JWT 方法来生成令牌,请检查下面我的代码,我还会添加 debu 的图片...

回答 1 投票 0

使用证书/公钥对 Azure AD 客户端凭据令牌进行身份验证

我正在从 azure 的令牌端点获取客户端凭据令牌 - https://login.microsoftonline.com//oauth2/v2.0/token 之后,我将 token 中的“kid”与 k 进行匹配...

回答 1 投票 0

如何在nodeJs中使用JWT来保护路由?

我想使路由(/主页)仅在用户登录时才能访问,但我无法做到。 基本上,我使用 JWT 和 MongoDB 编写了一个身份验证模块,现在,我一直在制作一个 p...

回答 1 投票 0

如何从后端发送仅http的cookie

我正在尝试使用 JWT 令牌和仅 HTTP cookie 与 Express.js 为管理面板创建身份验证。当我从前端发送请求时,它给出了成功的响应,但没有...

回答 1 投票 0

登录后如何访问blazor服务器中的JWT?

我正在从 Blazor 服务器项目调用 API 进行身份验证。 API 使用 JWT 进行响应。 我可以在登录后将其保存在 ProtectedLocalStorage 中,如下所示 等待 protectedLocalStorage.SetAs...

回答 1 投票 0

JWT 令牌错误:输入应该是有效的字符串

我正在尝试遵循 Sanjeev 的 python API 开发教程 (https://www.youtube.com/watch?v=0sOvCWFmrtA 1)。直到 7.5 小时我都没有遇到任何麻烦,但现在我正在尝试创建一个新帖子......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.