Skip to content

Keycloak

Keycloak için resmi CaptchaLa eklentisi. Keycloak'ın yerleşik giriş, kayıt ve parola sıfırlama ekranlarına kod yazmadan CAPTCHA doğrulaması ekler, sunucu tarafında doğrular. Keycloak'a bırakacağınız tek bir provider JAR olarak sunulur.

Kapsadıkları

Aşağıdaki her akış, ayrı bir kimlik doğrulama adımı olarak eklenir — yalnızca korumak istediğiniz ekranları korursunuz.

  • Tarayıcı girişi (kullanıcı adı / parola formu)
  • Kendi kendine kayıt
  • Parola sıfırlama ("parolamı unuttum" ekranı)

Doğrulama, varsayılan olarak kayan bir widget (float) ya da tıkla-aç modal (popup) şeklinde görüntülenir.

Kurulum

1. JAR dosyasını edinin

Eklenti şu adreste açık kaynak olarak mevcuttur: github.com/Captcha-La/captchala-keycloak. İki seçenek:

  • Sürümü indirin (önerilir) — deponun Releases sayfasından keycloak-captchala-<version>.jar dosyasını alın.
  • Kaynaktan derleyin — depoyu git clone ile klonlayın ve mvn clean package komutunu çalıştırın; JAR dosyası target/ klasöründe oluşturulur.

Eklenti, Keycloak ≥ 26 (Quarkus) ve Java 17 hedefler.

2. Dağıtın

bash
cp keycloak-captchala-1.0.0.jar /opt/keycloak/providers/
/opt/keycloak/bin/kc.sh build
# Keycloak'ı yeniden başlatın

Ardından giriş temasını ayarlayın: Realm settings → Themes → Login theme → captchala.

3. Anahtarlarınızı alın

dash.captcha.la üzerinden kaydolun, bir uygulama oluşturun ve şunları kopyalayın:

  • App Key — genel, sayfaya gömülür
  • App Secret — yalnızca sunucu tarafı, Keycloak tarafından tek kullanımlık token oluşturmak ve /v1/validate çağırmak için kullanılır

4. Akışları bağlayın

Yönetici konsolunda, korumak istediğiniz her akışa eşleşen yürütmeyi ekleyin, ardından App Key ve App Secret anahtarlarınızı yapıştırmak için dişli simgesine tıklayın:

  • Tarayıcı girişibrowser akışını kopyalayın, Username Password Form yerine Captchala Username Password Form (REQUIRED) koyun, realm browser akışı olarak bağlayın.
  • Kayıtregistration akışını kopyalayın, kayıt formu alt akışına Captchala Registration (REQUIRED) ekleyin, realm registration akışı olarak bağlayın.
  • Parola sıfırlamareset credentials akışını kopyalayın, Choose User yerine Captchala Reset Credential (choose user) (REQUIRED) koyun, realm reset-credentials akışı olarak bağlayın.

Doğrulamanın görüntülendiğini onaylamak için korunan ekranlardan birini gizli pencerede açın.

Yapılandırma

Her yürütme, kendi dişli simgesinden bağımsız olarak yapılandırılır. Anahtarlar ayarlandıktan sonra varsayılanlar hemen çalışır.

AyarAnahtarVarsayılanAçıklama
App Keyapp.keyCaptchaLa panosundan alınan public anahtar. Zorunlu.
App Secretapp.secretSunucu gizli anahtarı. Zorunlu. Maskelenmiş saklanır, tarayıcıya asla açılmaz.
API temel URL'iapi.basehttps://apiv1.captcha.laCaptchaLa API tabanı.
Widget script URL'iscript.urlhttps://api.captcha.la/sdk/jslib/captchala.jsWidget JS'nin yüklendiği adres.
Widget CSS URL'icss.urlhttps://api.captcha.la/sdk/jslib/captchala.cssWidget CSS'nin yüklendiği adres.
Görüntüleme moduproductfloatfloat (kayan widget) veya popup (modal).
Eylem etiketiactionakış başınaDoğrulamada gönderilen action (login, register, reset).
Dillanguagerealm localeWidget dili; boş bırakılırsa Keycloak locale'ini takip eder.
Kapalı başarısızfail.closedtrueCaptchaLa API'sine erişilemediğinde gönderimi reddeder. Açık başarısız için kapatın.
Sunucu token kullanuse.server.tokentrueDaha güçlü yeniden oynatma koruması için görüntülemede tek kullanımlık sunucu token'ı oluşturur.

SSS

Eklenti ücretsiz mi?

Evet. Keycloak eklentisi ücretsiz ve açık kaynaktır. CaptchaLa ücretsiz planı ayda 10.000 doğrulamayı kapsar — ücretli planlar yalnızca daha fazla hacme ihtiyacınız varsa geçerlidir.

Hangi Keycloak sürümleri destekleniyor?

Quarkus dağıtımında Keycloak 26+, Java 17 ile 26.5.6 sürümüne göre derlendi. JAR'ı providers/ klasörüne bırakın, kc.sh build komutunu çalıştırın ve yeniden başlatın.

Hangi ekranları koruyabilir?

Tarayıcı girişi, kendi kendine kayıt ve parola sıfırlama. Her biri akışına bağımsız olarak eklenir, dolayısıyla birini, ikisini veya üçünü de koruyabilirsiniz.

App Secret tarayıcıya hiç açılıyor mu?

Hayır. Gizli anahtar maskelenmiş olarak saklanır ve yalnızca Keycloak'tan CaptchaLa API'sine X-App-Secret başlığında gönderilir. Herhangi bir sayfada, şablonda veya günlükte hiç görünmez. Her doğrulama tek kullanımlık bir token ile doğrulanır, dolayısıyla çözülen bir token yeniden kullanılamaz.

CaptchaLa API'sine erişilemezse ne olur?

Varsayılan olarak eklenti kapalı başarısız olur (gönderim reddedilir). Açık başarısız yapmak için herhangi bir yürütmede fail.closed seçeneğini kapatın — aşamalı dağıtım için kullanışlıdır, üretim için önerilmez.

Kaynak

MIT-licensed examples · CaptchaLa is operated independently