Весенняя загрузка только авторизация? - PullRequest
0 голосов
/ 27 января 2019

Мой сервер имеет API, доступ к которому осуществляется через ключ API. Я использую решение из учебника для реализации этого с WebSecurityConfigurerAdapter (ниже).

Кроме того, я получаю JWT, который сообщает мне авторизацию для некоторых маршрутов. Некоторые маршруты не нуждаются в авторизации.

Но мне не нужно решение для аутентификации (кроме ключа API).

Как я могу использовать Spring Boot для достижения этой цели?

Все, что я обнаружил до сих пор, сочетает в себе аутентификацию и авторизацию, кажется, что ее трудно распутать.


Текущая реализация ключа API:

public class APISecurityConfig extends WebSecurityConfigurerAdapter {

    @Value("${godojo.http.auth-token-header-name}")
    private String principalRequestHeader;

    @Value("${godojo.http.auth-token}")
    private String principalRequestValue;

    @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        APIKeyAuthFilter filter = new APIKeyAuthFilter(principalRequestHeader);

        filter.setAuthenticationManager(new AuthenticationManager() {

            @Override
            public Authentication authenticate(Authentication authentication) throws AuthenticationException {                
                String principal = (String) authentication.getPrincipal();
                if (!principalRequestValue.equals(principal))
                {
                    throw new BadCredentialsException("The API key was not found or not the expected value.");
                }
                authentication.setAuthenticated(true);
                return authentication;
            }
        });

        httpSecurity.
            antMatcher("/**").
            csrf().disable().
            sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).
            and().addFilter(filter).authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll().anyRequest().authenticated();
    }

}
...