Keycloak Nedir? Spring Boot Entegrasyonu ve Auth0 Karşılaştırması (2026)
Keycloak, açık kaynaklı bir Identity and Access Management (IAM) çözümüdür. Kullanıcı kimlik doğrulama, yetkilendirme ve Single Sign-On (SSO) gibi güvenlik işlemlerini merkezi bir yapıda yönetmenizi sağlar.
Keycloak nedir, ne işe yarar? Spring Boot ile nasıl entegre edilir? Auth0 ve Okta'dan farkı nedir? Bu rehberde Keycloak'ı sıfırdan kurulumdan Spring Boot entegrasyonuna kadar adım adım anlatıyoruz.
Keycloak Nedir?
Keycloak, Red Hat tarafından geliştirilen ve açık kaynak olarak sunulan bir Identity and Access Management (IAM) platformudur. Uygulamalarınıza kullanıcı girişi, yetkilendirme ve SSO (Single Sign-On) eklemek için kullanılır.
Kendi sunucunuzda (self-hosted) çalıştırabilirsiniz — bu da Auth0 veya Okta gibi bulut tabanlı çözümlere göre en büyük avantajıdır. Verileriniz tamamen sizin kontrolünüzde kalır.
- OAuth 2.0 ve OpenID Connect (OIDC) desteği
- SAML 2.0 entegrasyonu
- Single Sign-On (SSO) — bir kez giriş, tüm uygulamalara erişim
- LDAP ve Active Directory bağlantısı
- Sosyal login (Google, GitHub, Facebook)
- Çok faktörlü kimlik doğrulama (MFA)
- Kullanıcı yönetimi ve rol tabanlı erişim kontrolü (RBAC)
Keycloak Ne İşe Yarar?
Bir uygulamaya kullanıcı girişi eklemek istediğinizde iki seçenek vardır: kendi kimlik doğrulama sisteminizi sıfırdan yazmak ya da Keycloak gibi hazır bir IAM çözümü kullanmak.
Kendi sisteminizi yazmak şifre hashing, token yönetimi, oturum güvenliği, brute force koruması gibi onlarca detayı kapsar. Keycloak bunların hepsini sizin yerinize halleder.
- Mikroservis mimarisi: Her servis ayrı ayrı authentication yazmak yerine Keycloak'a yönlendirir.
- Kurumsal uygulamalar: LDAP/AD ile mevcut kullanıcı dizinine bağlanır.
- Çoklu uygulama: SSO ile kullanıcı bir kez giriş yapıp tüm uygulamalara erişir.
- API güvenliği: JWT tabanlı token üretir, her servis token'ı doğrular.
Keycloak Kurulum Adımları
Keycloak'ı Docker ile çalıştırmak en hızlı yoldur:
docker run -p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:24.0.0 start-dev
Tarayıcıdan http://localhost:8080 adresine gidin. Admin konsoluna admin / admin ile giriş yapın.
Realm ve Client Oluşturma
- Realm oluşturun: Sol üstteki "master" dropdown → "Create Realm" → isim verin (örn.
myrealm) - Client ekleyin: Clients → Create client → Client ID:
spring-app→ Client authentication: ON - Client secret alın: Credentials sekmesinden secret'ı kopyalayın
- Kullanıcı oluşturun: Users → Add user → şifre belirleyin
- Rol atayın: Roles → Create role → kullanıcıya atayın
Spring Boot ile Keycloak Entegrasyonu (2026)
Spring Boot 3.x ile birlikte eski keycloak-spring-boot-starter adapter'ı resmi olarak kaldırıldı. Artık standart Spring Security OAuth2 Resource Server kullanılması önerilir.
KeycloakWebSecurityConfigurerAdapter tabanlı örnekler Spring Boot 2.x içindir. Spring Boot 3.x ile çalışmaz.
1. Maven Dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
2. application.yml
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: http://localhost:8080/realms/myrealm
3. Security Config
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll()
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2 -> oauth2
.jwt(Customizer.withDefaults())
);
return http.build();
}
}
4. Token Testi
Keycloak'tan token almak için:
curl -X POST http://localhost:8080/realms/myrealm/protocol/openid-connect/token \
-d "grant_type=password" \
-d "client_id=spring-app" \
-d "client_secret=YOUR_SECRET" \
-d "username=testuser" \
-d "password=testpass"
Dönen access_token'ı API isteklerinde kullanın:
curl http://localhost:8081/api/hello \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIs..."
Keycloak vs Auth0 vs Okta
- Lisans: Keycloak açık kaynak ve ücretsiz. Auth0 freemium (sınırlı ücretsiz plan). Okta ücretli.
- Self-hosting: Keycloak kendi sunucunuzda çalışır. Auth0 ve Okta bulut tabanlıdır.
- SSO: Üçü de destekler.
- LDAP/AD: Keycloak native destek sunar. Auth0 sınırlı, Okta tam destek.
- Özelleştirme: Keycloak çok yüksek — login sayfası, flow, tema tamamen değiştirilebilir. Auth0 ve Okta orta düzeyde.
- Yönetim kolaylığı: Auth0 ve Okta daha kolay — Keycloak kurulum ve bakım gerektirir.
- Ölçeklenebilirlik: Keycloak kendi altyapınıza bağlı. Auth0 ve Okta bulut ölçeğinde çalışır.
Mikroservislerde Keycloak Kullanımı
Mikroservis mimarisinde her servisin ayrı authentication yapması hem tekrar hem de güvenlik riski yaratır. Keycloak merkezi bir auth sunucusu olarak tüm servislerin güvenliğini tek noktadan yönetir.
- Kullanıcı Keycloak'a giriş yapar, JWT token alır.
- Her mikroservise istekte token gönderilir.
- Her servis token'ı Keycloak'ın public key'i ile bağımsız olarak doğrular — Keycloak'a tekrar istek atmaz.
- Token içindeki roller ile her servis kendi yetkilendirmesini yapar.
Bu yapı hem performanslıdır (her doğrulama için merkezi sunucuya gidilmez) hem de ölçeklenebilirdir.
Sık Sorulan Sorular
Keycloak nedir kısaca?
Keycloak, uygulamalarınıza kullanıcı girişi, yetkilendirme ve SSO eklemek için kullanılan açık kaynaklı bir IAM (Identity and Access Management) platformudur. Red Hat tarafından geliştirilir ve ücretsizdir.
Keycloak ücretsiz mi?
Evet. Keycloak tamamen açık kaynak ve ücretsizdir. Apache 2.0 lisansı altında dağıtılır. Kendi sunucunuzda sınırsız kullanabilirsiniz.
Keycloak vs Auth0 farkı nedir?
Keycloak self-hosted ve ücretsizdir — verileriniz sizin sunucunuzda kalır. Auth0 bulut tabanlı ve ücretlidir, kurulumu daha kolaydır ama veri kontrolü azalır. Bütçe kısıtı veya veri gizliliği önceliği varsa Keycloak, hızlı managed servis için Auth0.
Keycloak mikroservislerde neden kullanılır?
Her mikroservisin kendi authentication sistemini yazması yerine Keycloak merkezi bir auth sunucusu görevi görür. JWT tabanlı token yapısı sayesinde her servis token'ı bağımsız doğrulayabilir, performans kaybı yaşanmaz.
Spring Boot 3.x ile eski Keycloak adapter çalışır mı?
Hayır. keycloak-spring-boot-starter ve KeycloakWebSecurityConfigurerAdapter Spring Boot 3.x ile uyumlu değildir. Spring Boot 3.x'te spring-boot-starter-oauth2-resource-server kullanılması gerekir.
Keycloak ile sosyal login (Google, GitHub) eklenebilir mi?
Evet. Keycloak admin konsolundan Identity Providers bölümüne girip Google, GitHub, Facebook gibi sağlayıcıları birkaç adımda ekleyebilirsiniz. Uygulamanızda herhangi bir değişiklik gerekmez.
Sonuç
Keycloak, özellikle mikroservis mimarisi ve kurumsal uygulamalar için güçlü ve ücretsiz bir IAM çözümüdür. OAuth2, OpenID Connect ve SAML desteği, LDAP entegrasyonu ve SSO yapısıyla modern güvenlik gereksinimlerini karşılar.
Spring Boot 3.x entegrasyonu için artık standart OAuth2 Resource Server yapısı kullanılmaktadır — eski adapter tabanlı örneklere dikkat edin.
Token yapısını daha detaylı öğrenmek için JWT Nedir? ve Token Nedir? içeriklerine de göz atabilirsiniz.