JWT ile kimlik doğrulama (SDK identity verification)
Kullanıcı kimliğinizi (external_id) SDK'ya verirken başkasının kimliğine bürünülmesini önlemek için kanıt istenir. İki yöntem vardır ve app ayarında seçilir (ADR-0023 §9):
Kullanıcı kimliğinizi (external_id) SDK'ya verirken başkasının kimliğine bürünülmesini önlemek için kanıt istenir. İki yöntem vardır ve app ayarında seçilir (docs/adr/0023-kurumsal-kimlik-sso-scim-jwt.md §9):
| Mod | Kanıt |
|---|---|
hmac (varsayılan) | identity_hash = HMAC-SHA256(sdk_secret, external_id) — süresiz |
jwt | Sunucunuzda ES256 ile imzalanan, en çok 24 saat geçerli JWT |
both | İkisinden biri (geçiş dönemi) |
Ayarlar → App → JWT kimlik doğrulama bölümünden modu seçin ve genel anahtarınızı ekleyin. "Kimlik doğrulama zorunlu" açıksa seçilen türde kanıt olmayan istekler 403 alır.
1. Anahtar çifti üretin
openssl ecparam -name prime256v1 -genkey -noout -out hs-identity.pemopenssl ec -in hs-identity.pem -pubout -out hs-identity.pub.pemhs-identity.pub.pem içeriğini panele (veya POST /v1/apps/{appId}/identity-keys ile) ekleyin; size bir kid verilir. Özel anahtar yalnızca sunucunuzda kalır; Pushizo'ya gönderilmez (özel anahtar içeren istek reddedilir).
2. Belirteci sunucunuzda üretin
Talepler: sub = external_id, aud = app kimliği, iat, exp (en çok 24 saat); başlıkta alg: ES256 ve kid.
import { Pushizo } from '@pushizo/node';
const jwt = Pushizo.identityToken({ privateKey: process.env.HS_IDENTITY_KEY!, kid: 'main', appId: 'app_…', externalId: user.id, expiresInSeconds: 3600 });$jwt = \Pushizo\Client::identityToken(getenv('HS_IDENTITY_KEY'), 'main', 'app_…', $user->id, 3600);from pushizo import identity_token # pip install "pushizo[jwt]"
jwt = identity_token(os.environ["HS_IDENTITY_KEY"], "main", "app_…", user.id, expires_in=3600)jwt, err := pushizo.IdentityToken(pushizo.IdentityTokenOptions{PrivateKeyPEM: key, Kid: "main", AppID: "app_…", ExternalID: user.ID, TTL: time.Hour})String jwt = io.pushizo.IdentityToken.create(pem, "main", "app_…", user.getId(), Duration.ofHours(1));var jwt = Pushizo.IdentityToken.Create(pem, "main", "app_…", user.Id, TimeSpan.FromHours(1));jwt = Pushizo.identity_token(pem, kid: "main", app_id: "app_…", external_id: user.id, expires_in: 3600)3. SDK'ya verin
Uygulamanız belirteci kendi oturumlu API'nizden alır ve girişte SDK'ya verir. SDK belirteci tüm SDK isteklerinde Authorization: Bearer başlığıyla taşır (URL'ye ve gövdeye yazılmaz).
await Pushizo.login(user.id, { jwt });
// Süresi dolmadan yenileyin:
await Pushizo.updateUserJwt(newJwt);Mobil SDK'lar ve köprüler aynı API'yi sunar (login(externalId, jwt), updateUserJwt(jwt)); ayrıntı her SDK'nın belgesinde. Çıkışta (logout) belirteç silinir.
Anahtar döndürme
Yeni anahtarı ekleyin (farklı kid), sunucunuzu yeni anahtarla imzalayacak şekilde güncelleyin, eski belirteçlerin süresi dolunca (en çok 24 saat) eski anahtarı İptal et ile kapatın. İptal edilen anahtarla imzalı belirteçler hemen reddedilir. Bir app'te en çok 10 etkin anahtar olabilir; birden çok anahtar varken başlıktaki kid zorunludur.
SCIM 2.0 ile üye sağlama
Kimlik sağlayıcınız (Okta, Microsoft Entra ID, OneLogin, JumpCloud…) Pushizo üyelerini SCIM 2.0 ile otomatik ekler, rollerini günceller ve ayrılanları kaldırır. SCIM Enterprise planındadır ve SSO ile birlikte kullanılır…
Event Streams: webhook gövde şablonu ve olay filtresi
Event Streams, giden webhook'ların (docs/webhooks.md) gövdesini alıcının beklediği biçime dönüştürmenizi ve yalnızca ilgilendiğiniz olayları almanızı sağlar (ADR-0030). Dashboard'da Geliştirici → Webhooks → endpoint…