簡體   English   中英

JWT 已啟用 Spring 安全配置以允許對 Swagger UI 的所有請求

[英]JWT enabled Spring Security configuration to permit all requests to Swagger UI

我有以下 JWT 配置,但是我想允許對我的 swagger ui 的所有請求我嘗試使用 permitAll() 添加 antMatcher,但沒有成功。

有人可以幫我嗎?

@EnableWebSecurity
public class JwtAuthConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .csrf().disable()
                .oauth2ResourceServer()
                .jwt()
                .jwtAuthenticationConverter(getJwtAuthenticationConverter());
    }

    private Converter<Jwt, AbstractAuthenticationToken> getJwtAuthenticationConverter() {
        JwtAuthenticationConverter converter = new JwtAuthenticationConverter();
        converter.setJwtGrantedAuthoritiesConverter(jwt -> {
            Map<String, Object> claims = jwt.getClaims();
            String userType = (String) claims.get("custom:userType");
            Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
            if(!StringUtils.isEmpty(userType))
                grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_" + userType));
            return grantedAuthorities;
        });
        return converter;
    }
}

我也定義了這個 REST 前綴:

server:
  port: 5000
  servlet:
    context-path: /api/v1

我猜你需要這樣的東西:

http.authorizeRequests()
  .antMatchers("/swagger/**").permitAll()
  ...
  

看起來您仍然需要確保使用 oauth 過濾器對其他請求進行身份驗證。 看看這里的 .authenticated() 示例: Oauth 過濾器 Spring

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM