2015 https://stackoverflow.com/questions/29797721/oauth2-security-expressions-on-method-level ExpressionHandler https://stackoverflow.com/questions/33638850/how-to-protect-spring-security-oauth-resources-using-preauthorize-based-on-scop https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/expression/OAuth2SecurityExpressionMethods.html hasScope hasScopeMatching hasScopeAnyMatching clientHasRole clientHasAnyRole isOAuth isUser isClient import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.security.oauth2.client.DefaultOAuth2ClientContext; import org.springframework.security.oauth2.client.token.grant.client.ClientCredentialsResourceDetails; import org.springframework.cloud.security.oauth2.client.feign.OAuth2FeignRequestInterceptor; import feign.RequestInterceptor; @Configuration public class OAuth2ClientConfig { @Bean @ConfigurationProperties("security.oauth2.localas.client") public ClientCredentialsResourceDetails localAuthServerResourceDetails() { return new ClientCredentialsResourceDetails(); } @Bean public OAuth2RestTemplate localAuthServerRestTemplate() { return new OAuth2RestTemplate(localAuthServerResourceDetails()); } @Bean public RequestInterceptor oauth2FeignRequestInterceptor() { return new OAuth2FeignRequestInterceptor(new DefaultOAuth2ClientContext(), localAuthServerResourceDetails()); } }