Pushizo Docs
Rehberler

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):

ModKanıt
hmac (varsayılan)identity_hash = HMAC-SHA256(sdk_secret, external_id) — süresiz
jwtSunucunuzda 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.pem
openssl ec -in hs-identity.pem -pubout -out hs-identity.pub.pem

hs-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.

Bu sayfada