Как подключить Keycloak к Spring Boot проекту
Как подключить Keycloak к Spring Boot проекту Keycloak — это современный open-source Identity Provider от Red Hat, который часто используется в enterprise-проектах для SSO (Single Sign-On), OAuth2 и OpenID Connect. Ниже пошаговая настройка интеграции Keycloak с Spring Boot 3 и Spring Security 6. 1️⃣ Зависимости Проверь, что в проекте есть или добавь следующие зависимости: — Spring Web — Spring Security — OAuth2 Resource Server — OAuth2 Client 2️⃣ Разворачиваем Keycloak Запусти Keycloak через Docker: docker run -d \ -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:25.0.2 start-dev После запуска открой http://localhost:8080, войди под admin/admin и создай realm, например demo-realm. 3️⃣ Настройка клиента в Keycloak В разделе Clients → Create client укажи: — Client ID: spring-client — Client Protocol: openid-connect — Root URL: http://localhost:8081 В разделе Settings: — Установи Access Type → confidential — Включи Standard Flow Enabled — Укажи Redirect URI: http://localhost:8081/login/oauth2/code/keycloak Сохрани и перейди на вкладку Credentials, скопируй Client Secret. 4️⃣ Настройка application.yml server: port: 8081 spring: security: oauth2: client: registration: keycloak: client-id: spring-client client-secret: YOUR_CLIENT_SECRET scope: openid, profile, email redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}" provider: keycloak: issuer-uri: http://localhost:8080/realms/demo-realm 5️⃣ Конфигурация безопасности Настрой SecurityConfig.java: @Configuration public class SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers("/", "/public").permitAll() .anyRequest().authenticated() ) .oauth2Login(Customizer.withDefaults()) .logout(logout -> logout .logoutSuccessUrl("/") .invalidateHttpSession(true) ); return http.build(); } } 🧠 Зачем это нужно Keycloak снимает головную боль по хранению паролей, управлению ролями и сессиями. Он интегрируется с LDAP, AD, SAML и десятками внешних OAuth-провайдеров. Java Библиотека | Мы в Телеграм