@ EnableOAuth2Sso AND @EnableResourceServer в том же приложении - PullRequest
0 голосов
/ 05 июля 2018

Мне бы хотелось иметь набор служб, которые можно использовать с «Учетными данными клиента» (для компьютера к компьютеру) и с OAuth2 Single Sign On для обычного веб-приложения (которое обслуживается тем же приложением).

Я попытался установить оба параметра: @ EnableOAuth2Sso и @EnableResourceServer; Я ожидал, что приложение «попробует» токен на основе, а затем вернется к перенаправлению единого входа в случае, если оно не будет найдено и у пользователя нет сеанса.

Каждый конфиг работает нормально сам по себе (с:

@Bean public RemoteTokenServices ...

для @EnableResourceServer для настройки «CheckTokenEndpointUrl»).

Но как только я попробую с обоими, я получу:

Приложение не удалось запустить

Описание:

Методу springSecurityFilterChain в org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration требуется один компонент, но найдено 2: - userInfoTokenServices: определяется методом 'userInfoTokenServices' в ресурсе пути к классу [org / springframework / boot / autoconfigure / security / oauth2 / resource / ResourceServerTokenServicesConfiguration $ RemoteTokenServicesConfiguration $ UserInfoTokenServicesConfiguration.class] - remoteTokenServices: определяется методом 'remoteTokenServices' в ресурсе пути к классу [my / CustomWebSecurityConfigurerAdapter.class]

1 Ответ

0 голосов
/ 28 августа 2018

В вашем классе приложения весенней загрузки используйте аннотацию @EnableOAuth2Sso, а в классе конфигурации - аннотацию @EnableResourceServer, и в этом классе определите конечные точки, которые будут использоваться с токенами доступа.

@Configuration
@EnableResourceServer 
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
  @Override
  public void configure(HttpSecurity http) throws Exception {
    http
      .antMatcher("/user")  //end point that needs access token in header
      .antMatcher("/info")  //end point that needs access token in header
      .authorizeRequests().anyRequest().authenticated();
  }
}

Для получения дополнительной информации см. Ссылку

.
...