SpringBoot 1 vs 2 和 Spring Oauth2- 密码授予和客户端机密

SpringBoot 1 vs 2 and Spring Oauth2- Password Grant and Client Secret

有人知道 SpringBoot 和 Spring Oauth2 中的版本控制是如何工作的吗? 当我更改 SpringBoot 和 Spring Oauth2 的版本时,我从获取有效访问和刷新令牌变为 "unauthorized" 错误。我正在使用 spring-boot-starter-parent。 我运行一些测试和它的Spring引导版本;当我将版本从 1.. 更改为 2.. “/oauth/token” 将不再受到攻击. 这是授权服务器的配置:

@Configuration
@EnableAuthorizationServer
public class AuthorizationServerConfig extends 
AuthorizationServerConfigurerAdapter {
@Override
public void configure(ClientDetailsServiceConfigurer configurer) throws 
Exception {
configurer
    .inMemory()
    .withClient(CLIENT_ID)
    //.secret("secret")
    .authorizedGrantTypes(GRANT_TYPE_PASSWORD, REFRESH_TOKEN)
    .redirectUris("http://localhost:8080/")
    .scopes(SCOPE_READ)
    .accessTokenValiditySeconds(ACCESS_TOKEN_VALIDITY_SECONDS).
    refreshTokenValiditySeconds(REFRESH_TOKEN_VALIDITY_SECONDS);
    }
    ...
   }

当您从 Spring启动 1 到 2 时,

  • 您必须添加客户端密码才能使授权服务器正常工作。这就是 Spring Boot 的工作原理。
  • 如果您在 Spring Boot 1 中使用客户端密钥,则不需要传递哈希,但在 Spring Boot 2 中您需要这样做:

    inMemory()
    .withClient(CLIENT_ID)
    .secret(passwordEncoder.encode("secret"))