SpringBoot实现一个简单的SSO单点登录
在Spring Boot中实现SSO单点登录,你可以使用Spring Security和OAuth2来实现。以下是一个简化的例子:
- 添加依赖到你的
pom.xml
:
<dependencies>
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- OAuth2 Client -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
</dependencies>
- 配置
application.properties
或application.yml
:
spring.security.oauth2.client.registration.my-client.client-id=client-id
spring.security.oauth2.client.registration.my-client.client-secret=client-secret
spring.security.oauth2.client.registration.my-client.client-name=Client Name
spring.security.oauth2.client.registration.my-client.scope=read,write
spring.security.oauth2.client.registration.my-client.authorization-grant-type=authorization_code
spring.security.oauth2.client.registration.my-client.redirect-uri=your-redirect-uri
spring.security.oauth2.client.provider.my-provider.authorization-uri=your-authorization-server-uri
spring.security.oauth2.client.provider.my-provider.token-uri=your-token-server-uri
spring.security.oauth2.client.provider.my-provider.user-info-uri=your-user-info-uri
spring.security.oauth2.client.provider.my-provider.jwk-set-uri=your-jwk-set-uri
- 创建一个
SecurityConfig
类来配置Spring Security:
@Configuration
@EnableOAuth2Sso
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.anyRequest().authenticated();
}
}
- 在你的Controller中处理登录成功和失败的逻辑:
@Controller
public class LoginController {
@GetMapping("/login")
public String login(HttpServletRequest request, @RegisteredOAuth2AuthorizedClient("my-client") OAuth2AuthorizedClient authorizedClient) {
if (authorizedClient == null) {
return "redirect:/login/oauth2/authorization/my-client";
}
// 用户登录成功后的操作
return "home";
}
@GetMapping("/login/failure")
public String loginFailure(@RequestParam String error) {
评论已关闭