Kimlik doğrulama ve oturum API'si
Oturum açma, kısa ömürlü bir challenge, Telegram onayı ve orijinal tarayıcı üzerindeki kontrol kanıtı kullanır. İstemci tarafından sağlanan bir Telegram kimliği kimlik kanıtı değildir.
Bu sayfada
Oturum açmayı başlat#
POST /api/auth/telegram/start boş bir JSON nesnesi {} kabul eder. Tam uygulama Origin'i ve kullanılabilir bir bot gerektirir. Sunucu 300 saniye süren bir challenge ve korumalı bir tarayıcı kanıtı çerezi oluşturur.
201 yanıtı challengeId, code, expiresAt ve telegramUrl içerir. Kanıt çerezi derin bağlantıya dahil edilmez ve JavaScript için erişilemezdir. Sınır, hash'lenmiş adres başına dakikada altı başlatmadır.
const response = await fetch('/api/auth/telegram/start', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: '{}'
});
const challenge = await response.json();
// Show code and telegramUrl to the user.Onay bekleniyor#
POST /api/auth/telegram/complete {challengeId} kabul eder. Origin ve orijinal tarayıcı kanıtı çerezi gerektirir. Onaya kadar yanıt 202 {status: "pending"} şeklindedir.
Onaydan sonra 200, status=authenticated, user, csrfToken ve expiresAt döndürür. Oturum yalnızca bir kez düzenlenir. Süresi dolmuş challengelar 410 döndürür; kullanılmış veya iptal edilmiş challengelar 409 döndürür.
const response = await fetch('/api/auth/telegram/complete', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ challengeId: challenge.challengeId })
});
if (response.status === 202) {
// Poll again after a delay; do not create a new challenge.
}Oturumu okuma#
GET /api/auth/me, geçerli bir oturum yokken 200 {authenticated:false} döndürür. Oturum açılmış bir yanıt user, CSRF token ve süre sonu içerir.
__Host-kevmi-session çerezi Secure, HttpOnly, SameSite=Lax ve Path=/ ile 24 saate kadar sürer. Veritabanı token'ının SHA-256 hash'ini saklar. Bir profil formu çerezi okuyamaz veya değiştiremez.
Hesap değişiklikleri#
Mutation'lar oturum, tam Origin ve güncel X-CSRF-Token gerektirir. Sec-Fetch-Site: cross-site reddedilir. Sunucu keyfi CORS erişimi sunmaz.
Hesap kimliği istek girdisinden değil oturumdan gelir. Eksik veya başka bir kullanıcıya ait kayıtlar, sahiplik ayrıntılarını ifşa etmez.
Oturumu kapatma#
POST /api/auth/logout mevcut oturumu sonlandırır ve çerezi temizler. Origin ve CSRF gereklidir; gövde okunmaz. Telegram /logout ayrıca tüm hesap oturumlarını sonlandırır.
Çerezler otomatik olarak başka bir alan adına taşınmaz. Hizmet alan adı değiştirilirken APP_ORIGIN ve bot webhook'u güncelleyin, ardından tekrar oturum açın.