我正在使用spring security对使用jwt令牌的用户进行身份验证。
身份验证工作正常,当令牌格式错误或过期时,我将获得403 Http状态,如下配置所示:
@Bean
public SecurityWebFilterChain securitygWebFilterChain(ServerHttpSecurity http) {
return http
.exceptionHandling()
.authenticationEntryPoint((swe, e) -> {
return Mono.fromRunnable(() -> {
swe.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
});
}).accessDeniedHandler((swe, e) -> {
return Mono.fromRunnable(() -> {
swe.getResponse().setStatusCode(HttpStatus.FORBIDDEN);
});
}).and()
.csrf().disable()
.formLogin().disable()
.httpBasic().disable()
.authenticationManager(authenticationManager)
.securityContextRepository(securityContextRepository)
.authorizeExchange()
.pathMatchers(HttpMethod.OPTIONS).permitAll()
.pathMatchers("/**").permitAll()
.anyExchange().authenticated()
.and().build();
}
但是,当我从spring security context使用主体或身份验证从jwt令牌获取用户信息时,如下面的代码所示:
@ResponseStatus(HttpStatus.OK)
@GetMapping("/me")
public Mono<ClientDTO> find(final Principal principal) {
return this.clientService.findByMail(principal.getName());
}
如果令牌格式不正确或过期,我将从主体对象获得空指针异常和500https状态。
@ResponseStatus(HttpStatus.OK)
@GetMapping("/me")
public Mono<ClientDTO> find(final Principal principal) {
if(principal!=null) return this.clientService.findByMail(principal.getName());
else throw new CustomTokenExpiredException();
}
并删除.pathmatchers(“/**”).PermitAll()
我遵循本教程使用JWT令牌。令牌到期时间设置为仅5分钟,但如果我想在使用1分钟后使令牌无效,该怎么办?我希望能够对API进行调用,以删除我的令牌。 我正在使用Express和Node。 从我能收集到的信息来看,我的选择是拥有一个存储令牌的令牌db。当我想让我的令牌过期时,我会从DB中过期/删除该令牌。 我还看到人们随意地说“移除”物理硬盘空间中的令牌,但我无法找出令牌的物理存储位置,以便我移除它。
当令牌类型为“at+jwt”时,我们在验证中得到错误: 这只发生在大于2.2.7的spring boot版本中,你知道如何在验证中设置允许的令牌类型吗?
我正在使用Azure AD对spring boot应用程序进行用户身份验证。我创建了一个应用程序来获取登录用户的访问令牌(令牌创建者应用程序)。在此应用程序中,“/token”API从@RegisteredAuth2AuthorizedClient读取访问令牌,并返回与响应相同的令牌。 然后,我必须使用返回的令牌作为RESTAPI的承载令牌,用于具有相同客户端id和相同配置的另一个应用程序。 但当
那么有人能告诉我如何避免这种情况吗?
我有一系列配置为使用Spring Boot和Cloud OAuth2 SSO的微服务项目。它具有以下组件: Spring Boot 1.3.0 Spring Cloud Brixton。M3 auth server具有Spring Boot 1.2.7和Cloud Angel。SR4 Zuul代理(网关) 验证服务器 资源服务器 用户界面服务器 尤里卡服务器 基本流程是: 使用URL解析UI服务器
定义的新集成密钥9xxx7e null 但仍然得到401的回应内容: