我想从校长那里得到实验对象。
目前,我使用的是以下代码:
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof UserDetails) {
String username = ((UserDetails)principal).getUsername();
} else {
String username = principal.toString();
}
实际上,principal
对象类是org.springframework.security.oauth2.jwt.Jwt
。
尽管如此,我希望得到的主题是jwt,而不是我得到的整个令牌。
我目前的配置运行良好,我的意思是,我可以使用@PreAuthorize
注解来授权方法。
我的当前配置是:
@Bean
public SecurityFilterChain securityFilterChain(
HttpSecurity http
) throws Exception {
Customizer<OAuth2ResourceServerConfigurer<HttpSecurity>> oauth2Customizer = (config) -> config.jwt();
return http
.httpBasic().disable()
.csrf().disable()
.formLogin().disable()
.anonymous().disable()
.logout().disable()
.authorizeHttpRequests((authorize) -> authorize
.antMatchers("/actuator/**").permitAll()
.antMatchers("/gicar/**").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2Customizer)
.build();
}
有什么想法吗?
1条答案
按热度按时间mf98qq941#
假设没有其他自定义配置,并且您的令牌是
JwtAuthenticationToken
的示例,则可以直接从令牌本身提取主题。根据JwtAuthenticationToken和JwtAuthenticationConverter的