Oauth2 с Maven работает, а Gradle - нет - PullRequest
1 голос
/ 20 февраля 2020

Я пытался разработать Oauth и получил пример от Oauth DZone . Это в Maven. У меня есть gradle build, содержащий следующие зависимости. Я использую весеннюю загрузку 1.5.9

 compile('org.springframework.boot:spring-boot-starter')
 testCompile('org.springframework.boot:spring-boot-starter-test')
 compile('org.springframework.security.oauth:spring-security-oauth2:2.0.14.RELEASE')
 compile('org.springframework.boot:spring-boot-starter-web')
 testCompile('org.springframework.boot:spring-boot-starter-test')
 compile('org.springframework.boot:spring-boot-starter-data-jpa')

 runtime('mysql:mysql-connector-java:5.1.44')

 compile group: 'org.springframework.hateoas', name: 'spring-hateoas', version: '0.16.0.RELEASE'
 compile('org.springframework.boot:spring-boot-starter-security')
compile group: 'org.springframework.security',name:'spring-security-jwt', version:'1.0.8.RELEASE'

compile group: 'org.springframework', name: 'spring-context-support'
compile('org.springframework.boot:spring-boot-starter-tomcat')  
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")

compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail', version: '1.2.0.RELEASE'
compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: '1.5.9.RELEASE'

Но тот же код не работает и выдает ошибку 403, запрещенную

Я также нашел ссылку с просьбой не использовать gradle, но использовать maven Нет Gradle Only Maven

Мой код Gradle работал для получения пользователей (userinfo), а также работает токен oauth. Когда я написал дополнительные контроллеры и сервисы, это не работает. Поэтому я удалил весь код и поместил код, который работал с Maven и Gradle, как это было сделано при запуске, но это не помогло.

Использовал следующее

@Configuration
@EnableResourceServer
public class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
   private static final String RESOURCE_ID = "resource-server-rest-api";
   private static final String SECURED_READ_SCOPE = "#oauth2.hasScope('read')";
   private static final String SECURED_WRITE_SCOPE = "#oauth2.hasScope('write')";
   private static final String SECURED_PATTERN = "/secured/**";
   @Override
   public void configure(ResourceServerSecurityConfigurer resources) {
       resources.resourceId(RESOURCE_ID);
   }
   @Override
   public void configure(HttpSecurity http) throws Exception {
    /*http.requestMatchers()
            .antMatchers(SECURED_PATTERN).and().authorizeRequests()
            .antMatchers(HttpMethod.POST, SECURED_PATTERN).access(SECURED_WRITE_SCOPE)
            .anyRequest().access(SECURED_READ_SCOPE);*/
       http.antMatcher("/**")
       .authorizeRequests().anyRequest().authenticated();
   }
 }


  package org.com.example.configuration;

 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
 import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;
 import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer;
 import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer;
 import org.springframework.security.oauth2.provider.token.TokenStore;
 import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
 import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

 @Configuration
 @EnableAuthorizationServer
 public class OAuthConfiguration extends AuthorizationServerConfigurerAdapter {

  @Autowired
  @Qualifier("authenticationManagerBean")
  private AuthenticationManager authenticationManager;

  @Autowired
  UserDetailsService userDetailsService;

  @Override
  public void configure(final AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
    oauthServer.tokenKeyAccess("permitAll()").checkTokenAccess("isAuthenticated()");
  }

  @Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
    clients.inMemory()
    .withClient("fooClientId").secret("secret")
    .authorizedGrantTypes("password", "authorization_code", "refresh_token").scopes("read","write")
    .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT", "USER","ADMIN")
    .autoApprove(true)
    .accessTokenValiditySeconds(180)//Access token is only valid for 3 minutes.
    .refreshTokenValiditySeconds(600);//Refresh token is only valid for 10 minutes.;
}

  @Override
  public void configure(final AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
    endpoints.tokenStore(tokenStore()).authenticationManager(authenticationManager).accessTokenConverter(defaultAccessTokenConverter())
    .userDetailsService(userDetailsService);
}

@Bean
public TokenStore tokenStore(){
    return new JwtTokenStore(defaultAccessTokenConverter());    
}

@Bean
public JwtAccessTokenConverter defaultAccessTokenConverter() {
    JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
    converter.setSigningKey("123");
    return converter;
 }
}

Я запрашиваю предложения и также позволил мне знать, не работает ли gradle с oauth2 (весенняя загрузка 1.5.9)

...