免费信息网站排名,专注东莞微信网站设计,wp怎么打开wordpress,东莞网站建设推广技巧基本认证概述
基本认证#xff08;Basic Auth#xff09;是保护REST API最简单的方式之一。它通过在HTTP请求头中携带Base64编码过的用户名和密码来进行身份验证。由于基本认证不使用cookie#xff0c;因此没有会话或用户登出的概念#xff0c;这意味着每次请求都必须包含…基本认证概述
基本认证Basic Auth是保护REST API最简单的方式之一。它通过在HTTP请求头中携带Base64编码过的用户名和密码来进行身份验证。由于基本认证不使用cookie因此没有会话或用户登出的概念这意味着每次请求都必须包含身份验证信息。
Maven依赖
要在Spring Boot项目中使用Spring Security需要添加以下Maven依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-security/artifactId
/dependencySpring Security配置
接下来我们将配置Spring Security以使用内存中的基本认证。创建一个名为SpringSecurityConfig的类并加入如下代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
import org.springframework.security.web.SecurityFilterChain;Configuration
EnableWebSecurity
public class SpringSecurityConfig {Beanpublic static PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();}Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.csrf().disable().authorizeHttpRequests(authorize - authorize.anyRequest().authenticated()).httpBasic(Customizer.withDefaults());return http.build();}Beanpublic UserDetailsService userDetailsService() {UserDetails ramesh User.builder().username(ramesh).password(passwordEncoder().encode(password)).roles(USER).build();UserDetails admin User.builder().username(admin).password(passwordEncoder().encode(admin)).roles(ADMIN).build();return new InMemoryUserDetailsManager(ramesh, admin);}
}默认情况下Spring Security同时启用了基于表单的身份验证和HTTP基本认证。上述配置中我们通过调用httpBasic()方法仅启用了基本认证。此外我们还定义了一个UserDetailsService实现用于内存中的用户管理。
创建REST API
为了测试上面的Spring Security配置创建一个简单的REST API并使用Spring Security加以保护。当向Spring Boot项目添加Spring Security依赖后默认所有应用URL都会受到保护。
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController
public class WelComeController {GetMapping(/greeting)public String greeting(Authentication authentication) {return Spring Security In-memory Authentication Example - Welcome authentication.getName();}
}使用Postman测试REST API
要测试REST API需要在请求头中传递Base64编码过的用户名和密码即基本认证。
如果未提供这些凭证将收到401状态码这表明Spring Security正在正确地保护API。
总结
通过本教程您应该了解了如何配置Spring Security的内置HTTP基本认证来保护REST API。
基本认证虽然简单但在某些场景下仍是非常实用的选择。