Spring Boot项目的基本身份验证?

时间:2018-03-31 03:24:45

标签: spring spring-boot

我在网上尝试了一些例子,但没有一个例子符合我的需要。

我是唯一使用该项目的人,我想为所有控制器设置一个静态用户名密码。

如何使用基本的http auth?

为静态用户名/密码配置Spring启动

2 个答案:

答案 0 :(得分:0)

不确定您要构建的内容,但是您尝试过这个link

它只是建议在下面的代码段,你有用户名/密码硬编码,用于基本身份验证。

您也可以将它们外部化为属性文件。

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private AuthenticationEntryPoint authEntryPoint;

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf().disable().authorizeRequests()
            .anyRequest().authenticated()
            .and().httpBasic()
            .authenticationEntryPoint(authEntryPoint);
}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {


auth.inMemoryAuthentication().withUser("john123").password("password").roles("USER");
}
}

答案 1 :(得分:0)

  1. 将Spring Security放在类路径上(我假设您已经这样做了)。 Spring Boot默认启用Basic Auth Web安全性,生成用户名'user'和随机密码,您可以在启动应用程序时在日志中找到该密码。
  2. 将以下内容放入private static final char[] hexArray = "0123456789abcdef".toCharArray(); public static String getSHA256(String data) { StringBuilder sb = new StringBuilder(); try { MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(data.getBytes()); byte[] byteData = md.digest(); sb.append(bytesToHex(byteData); } catch(Exception e) { e.printStackTrace(); } return sb.toString(); } private static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for ( int j = 0; j < bytes.length; j++ ) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return String.valueOf(hexChars); } 文件中:

    • application.properties
    • spring.security.user.name=<your username>

    这将覆盖Spring Boot标准行为。如果您正在使用角色,您还可以根据自己的喜好设置spring.security.user.password=<your password>