OpenID Connect(OIDC)认证--keycloak与springboot项目的整合
    		       		warning:
    		            这篇文章距离上次修改已过422天,其中的内容可能已经有所变动。
    		        
        		                
                在Spring Boot项目中整合Keycloak进行OpenID Connect (OIDC) 认证,你需要做以下几步:
- 添加Keycloak Spring Boot Starter依赖到你的pom.xml文件中。
<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-spring-boot-starter</artifactId>
    <version>16.1.0</version>
</dependency>- 在application.properties或application.yml中配置Keycloak的信息。
# application.properties
 
# Keycloak 服务器的地址
keycloak.auth-server-url=http://localhost:8080/auth
# 在Keycloak中创建的realm名称
keycloak.realm=your-realm
# 客户端ID
keycloak.resource=your-client-id
# 公钥
keycloak.public-key=公钥
# 使用内存存储用户会话
keycloak.securityConstraints[0].securityCollections[0].patterns[0]=/api/*- 在Spring Boot应用中添加安全配置。
import org.keycloak.adapters.springboot.KeycloakSpringBootConfigResolver;
import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Profile;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.annotation.web.reactive.WebFluxSecurityConfigurer;
import org.springframework.security.web.server.SecurityWebFilter;
 
@KeycloakConfiguration
public class SecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
 
    @Bean
    @Override
    protected KeycloakSpringBootConfigResolver keycloakConfigResolver() {
        return new KeycloakSpringBootConfigResolver();
    }
 
    @Override
    protected void configure(WebFluxSecurityBuilder security) throws Exception {
        security
            .csrf().disable()
            .authorizeExchange()
            .pathMatchers("/public/**").permitAll()
            .anyExchange().authenticated();
    }
}- 在你的控制器或者服务中使用注解来保护路径。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.security.access.annotation.Secured;
 
@RestController
@RequestMapping("/api")
public class ApiController {
 
    @GetMapping("/protected")
    @Secured("ROLE_user")
    public String protectedEndpoint() {
        return "Protected content";
    }
}确保你的Keycloak服务器已经配置好客户端、角色以及用户。用户需要被授予相应的角色,并且客户端应该在相应的rea
评论已关闭