这行有多个标记-不赞成使用NoOpPasswordEncoder类型-不赞成使用来自NoOpPasswordEncoder类型的getInstance()方法

时间:2018-09-02 07:18:55

标签: spring spring-boot single-sign-on microservices spring-cloud

我正在研究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显示错误。什么是不推荐使用的方法的替换?

enter image description here

输出: enter image description here

3 个答案:

答案 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();
    }