我正在研究Spring Cloud + Boot示例。在此示例中,我正在寻找SSO。当我运行此应用程序时,我得到的响应很好,但看起来像
此行有多个标记 -不赞成使用NoOpPasswordEncoder类型 -类型为NoOpPasswordEncoder的getInstance()方法为 不推荐使用
application.properties
server.port: 9000
server.servlet.context-path: /services
security.oauth2.client.clientId: pluralsight
security.oauth2.client.clientSecret: pluralsightsecret
security.oauth2.client.authorized-grant-types: authorization_code,refresh_token,password,client_credentials
security.oauth2.client.scope:toll_read,toll_report
ServiceConfig.java
@Configuration
public class ServiceConfig extends GlobalAuthenticationConfigurerAdapter {
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.passwordEncoder(NoOpPasswordEncoder.getInstance())
.withUser("agoldberg").password("pass1").roles("USER")
.and()
.withUser("bgoldberg").password("pass2").roles("USER", "OPERATOR");
}
}
MainMethod:
@SpringBootApplication
@EnableAuthorizationServer
public class PluralsightSpringcloudM4SecureauthserverApplication {
public static void main(String[] args) {
SpringApplication.run(PluralsightSpringcloudM4SecureauthserverApplication.class, args);
}
}
但是STS显示错误。什么是不推荐使用的方法的替换?
答案 0 :(得分:1)
您不应该使用此密码编码器,因为它不安全。来自official docs:
此PasswordEncoder不安全。而是使用自适应单向功能,如BCryptPasswordEncoder,Pbkdf2PasswordEncoder或SCryptPasswordEncoder。甚至更好地使用支持密码升级的DelegatingPasswordEncoder。
答案 1 :(得分:1)
我可以使用下面的代码解决此问题。我正在使用Spring Boot版本2.0.4.RELEASE
。完成!
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.authentication.configuration.GlobalAuthenticationConfigurerAdapter;
@Configuration
public class ServiceConfig extends GlobalAuthenticationConfigurerAdapter {
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("agoldberg").password("{noop}pass1").roles("USER")
.and()
.withUser("bgoldberg").password("{noop}pass2").roles("USER", "OPERATOR");
}
}
答案 2 :(得分:0)
不要使用NoOpPasswordEncoder。它什么也没做。改用:Pbkdf2PasswordEncoder,SCryptPasswordEncoder或BCryptPasswordEncoder。我通常使用BCryptPasswordEncoder。
以bean形式启动:
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}