我需要使用如下网址访问我的spring boot应用程序: https://username:password@IpServer/
我已经实现了https协议,但是这里的问题是如何添加用户并通过url
通常,我使用以下网址访问我的应用程序: https://@IpServer/
我需要遇到此主题的任何机构的帮助
答案 0 :(得分:0)
问题在于,如果您确实在URL路径中对用户名和密码进行了编码,则会创建一个巨大的安全漏洞。 URL通过DNS /域控制器时将被记录下来。因此,每个人的用户名和密码都会被破坏。
由于您的连接已通过SSL加密,因此您应该在http标头或请求的正文中发送这些凭据。
答案 1 :(得分:0)
我终于注意到,Spring boot集成了该apache选项,您应该在修改应用程序属性后添加Spring安全性的Security依赖项(同样适用于https协议):
# Define a custom port instead of the default 8080
server.port=443
#Define http server
#http.port=8080
# Tell Spring Security (if used) to require requests over HTTPS
security.require-ssl=true
# The format used for the keystore
server.ssl.key-store-type=PKCS12
# The path to the keystore containing the certificate
server.ssl.key-store=classpath:keystore.p12
# The password used to generate the certificate
server.ssl.key-store-password=keycertifpass
# The alias mapped to the certificate
server.ssl.key-alias=tomcat
在新类中添加基本身份验证之后,这种身份验证负责添加用户并通过URL传递:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import com.project.exception.CustomAuthenticationEntryPoint;
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private CustomAuthenticationEntryPoint unauthorizedHandler;
/** Use Basic Authentication **/
@Override
public void configure(HttpSecurity http) throws Exception
{
http.httpBasic().realmName("user").and().authorizeRequests()
.antMatchers("/**").hasRole("user")
.and()
.csrf().disable()
.exceptionHandling().authenticationEntryPoint(unauthorizedHandler);
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception
{
auth.inMemoryAuthentication()
.withUser("user").password(passwordEncoder().encode("pass")).roles("user");
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
对我来说,我已经为authenticationEntryPoint自定义了错误处理,可以根据需要添加它,也可以不进行自定义而保留它,这是免费的。
我希望这个答案能帮助遇到相同问题的人。
谢谢大家。