Как включить OAuth2 только для определенных классов в моем приложении Spring Boot Security OAuth2? - PullRequest
0 голосов
/ 19 мая 2018

Я следовал этому руководству, чтобы добавить OAuth2

https://spring.io/guides/tutorials/bookmarks/#_securing_a_rest_service

Но теперь требуется проверка подлинности для каждой отдельной страницы!

$ curl -s http://localhost:8080/login 
{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}

Я хочу использовать только OAuth2по API в одном конкретном классе.Я пытался прочитать ссылку на Spring Boot

https://docs.spring.io/spring-boot/docs/1.5.14.BUILD-SNAPSHOT/reference/htmlsingle/#boot-features-security

Но это не помогло!Это дало 0 примеров.

Чтобы настроить его, вы обычно используете внешние свойства и компоненты типа WebSecurityConfigurerAdapter (например, для добавления входа на основе формы).
Все вышеперечисленное можно включать и выключать или изменять с помощью внешних свойств (безопасность. *).Чтобы переопределить правила доступа без изменения каких-либо других автоматически настраиваемых функций, добавьте @Bean типа WebSecurityConfigurerAdapter с @Order (SecurityProperties.ACCESS_OVERRIDE_ORDER) и настройте его в соответствии с вашими потребностями.

Как Вы настраиваете это ?! Какие свойства ?! Как вы настраиваете для удовлетворения своих потребностей?!

Я попытался установить application.properties

security.basic.enabled = false
security.ignored = /login

Но все равно требуется проверка подлинности OAuth2.Я хочу включить OAuth2 только для класса IShortUrlApiInteface и отключить его для всех остальных @Controllers.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Создать новый класс, расширить ResourceServerConfigurerAdapter и переопределить метод configure(HttpSecurity).

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

    String [] ignoredPaths = new String[]{
            "/robots.txt", "/error", "/login", "/doLogut", "/home", "/pageNotFound", 
            "/css/**", "/js/**", "/fonts/**", "/img/**", ...
    };

    @Override
    public void configure(HttpSecurity http) throws Exception{

        http.authorizeRequests()
            .antMatchers(ignoredPaths).permitAll()
            .anyRequest().authenticated()
        .and()
            .httpBasic();   
    }
0 голосов
/ 28 мая 2018

В вашем случае вам нужно установить разрешение для входа в систему URI.Если вы работаете в микросервисной архитектуре, вам необходимо создать конфигурацию ресурсов в каждом проекте / услуге.

  • security.oauth2.resource.user-info-uri определяет URI службы авторизации
  • clientId определяет ваш фактический идентификатор клиента
  • В oauth для каждого ресурсасерверу необходимо создать уникальный идентификатор ресурса. Ниже приведен пример для сервера ресурсов.

    @ Configuration @ EnableResourceServer
    открытый класс ResourceConfig расширяет ResourceServerConfigurerAdapter {@Value ("$ {security.oauth2.resource.user-info-uri}") private String userInfoUri;

    @Value("${client-id}")
    private String clientId;
    
    @Override
    public void configure(final ResourceServerSecurityConfigurer resources) throws Exception {
        resources.resourceId("ig-user");
    }
    
    @Override
    public void configure(final HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/api/v1/user/activate/**").permitAll()//
                .antMatchers("/api/v1/user/access/check/**").permitAll()//
                .antMatchers("/api/v1/profile/exists/**").permitAll()//
                .antMatchers("/api/v1/user/sign-up/**").permitAll()//
                .antMatchers("/download/**").permitAll()//
                .anyRequest().authenticated();
    }
    
    @Primary
    @Bean
    public UserInfoTokenServices tokenService() {
        final UserInfoTokenServices tokenService = new UserInfoTokenServices(userInfoUri, clientId);
        return tokenService;
    }
    

    }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...