我的主要目标是在JHipster应用程序中以不同方式验证某些API。
现在我正在使用JHipster内置的无状态JWT身份验证机制,它运行得很好。我想创建一个API子集,其中需要API密钥来验证租户(而不是用户)而不是JWT。
我试图用this方法添加多个HttpSecurity实例(order(1)是我的自定义配置,order(2)是jwt)。我自己的自定义AuthorizationProvider的身份验证方法触发,并返回一个令牌,但我仍然收到一条JWT错误消息。
尽管我的身份验证成功,但JWTFilter不应该被调用。
我错过了什么?
我的日志:
[nio-8080-exec-3] c.s.b.s.i.IntegrationAuthFilter : Request is to process authentication
[nio-8080-exec-3] c.s.b.s.i.IntegrationAuthFilter : Authentication success. Updating SecurityContextHolder to contain: com.example.app.security.integration.IntegrationAuthToken@ffffffc4: Principal: asd; Credentials: [PROTECTED]; Authenticated: true; Details: null; Not granted any authorities
[nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
io.jsonwebtoken.MalformedJwtException: JWT strings must contain exactly 2 period characters. Found: 0
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:223)
at io.jsonwebtoken.impl.DefaultJwtParser.parse(DefaultJwtParser.java:458)
at io.jsonwebtoken.impl.DefaultJwtParser.parseClaimsJws(DefaultJwtParser.java:518)
at com.example.app.security.jwt.TokenProvider.validateToken(TokenProvider.java:98)
at com.example.app.security.jwt.JWTFilter.doFilter(JWTFilter.java:40)