Skip to main content

Sponsor Onayı (Personel Onayı)

Sponsor Onayı yöntemi, misafirin internet erişimi için bir şirket çalışanının (sponsor) onayını gerektiren iki taraflı bir kimlik doğrulama akışıdır. Kurumsal ofisler, devlet binaları ve yüksek güvenlikli ortamlar için tasarlanmıştır. Her erişim talebi tam denetim kaydıyla saklanır.

Nasıl Çalışır?

Misafir talep gönderir → Sponsor e-posta alır → Onaylar/Reddeder → Misafir bağlanır
  1. Misafir captive portal'a adını, ziyaret amacını ve onay alacağı sponsor'un kurumsal e-posta adresini girer.
  2. AnchorSpot, sponsor'a tek kullanımlık onay/red bağlantıları içeren bir e-posta gönderir (24 saat geçerli).
  3. Misafir portal'da bekler; portal arka planda kararı sorgular.
  4. Sponsor onaylarsa misafir otomatik olarak internete bağlanır. Reddederse misafir bilgilendirme mesajı görür.

API Akışı

1. Sponsor Talebi Oluşturma

curl -X POST https://<portal-host>/api/v1/portal/auth/sponsor/request \
-H "Content-Type: application/json" \
-d '{
"guest_name": "Ahmet Yılmaz",
"sponsor_email": "mehmet.kaya@sirket.com",
"reason": "Proje toplantısı — 3. kat, 10:00",
"mac": "aa:bb:cc:dd:ee:ff",
"ssid": "Misafir-WiFi"
}'

Başarılı yanıt:

{
"status": "pending",
"request_id": "req_7f3a9c12e4b8",
"expires_at": "2026-06-09T10:30:00Z"
}

2. Karar Sorgulama (Polling)

Misafir tarafı, portal'ın arka planda düzenli aralıklarla çağırdığı endpoint:

curl https://<portal-host>/api/v1/portal/auth/sponsor/poll/req_7f3a9c12e4b8

Olası yanıtlar:

{ "status": "pending" }
{ "status": "approved", "redirect_url": "https://..." }
{ "status": "rejected", "message": "Sponsor talebinizi reddetti." }
{ "status": "expired", "message": "Talep süresi doldu, lütfen tekrar deneyin." }

:::info Polling Aralığı Portal, karar sorgusunu her 5 saniyede bir yapar. Onay veya red alındığında polling otomatik durur. :::

3. Sponsor Talep Üstlenme (Claim)

Sponsor e-postadaki bağlantıya tıkladığında sistem aşağıdaki endpoint'i çağırır:

# Onaylama
curl -X POST https://<portal-host>/api/v1/portal/auth/sponsor/claim/req_7f3a9c12e4b8 \
-H "Content-Type: application/json" \
-d '{ "action": "approve", "token": "<one-time-token>" }'

# Reddetme
curl -X POST https://<portal-host>/api/v1/portal/auth/sponsor/claim/req_7f3a9c12e4b8 \
-H "Content-Type: application/json" \
-d '{ "action": "reject", "token": "<one-time-token>", "reason": "Tanımıyorum" }'

Tek kullanımlık token, e-postadaki bağlantıya gömülüdür ve 24 saat geçerlidir.

Sponsor'a gönderilen e-postada şu bilgiler bulunur:

  • Misafirin adı ve soyadı
  • Ziyaret nedeni
  • Talep zamanı ve sona eriş süresi
  • Onayla ve Reddet tek tıklık bağlantıları

Konsol'dan e-posta şablonu özelleştirilebilir (Ayarlar → Kimlik Doğrulama → Sponsor → E-posta Şablonu).

:::tip Kurumsal Özelleştirme Sponsor e-postasına şirket logosu ve renk teması eklenebilir. Böylece çalışanlar e-postanın güvenilirliğinden emin olur ve kimlik avı riskini azaltır. :::

Denetim İzi (Audit Trail)

Her sponsor talebi üç aşamalı tam denetim kaydıyla tutulur:

AşamaOlayKaydedilen Veriler
submitMisafir talep oluşturduMisafir adı, sponsor e-posta, MAC, SSID, IP, zaman damgası
decideSponsor onayladı / reddettiSponsor IP adresi, karar, gerekçe, zaman damgası
claimMisafir bağlantı kurduOturum ID, tahsis edilen IP, başlangıç zamanı

Denetim kayıtlarına Raporlar → Sponsor Talepleri ekranından erişilir.

TC Kimlik Numarası Bağlama (İsteğe Bağlı)

5651 uyumluluğu gerektiren ortamlarda misafirin TCKN'si sponsor talebine eklenebilir:

{
"guest_name": "Ahmet Yılmaz",
"sponsor_email": "mehmet.kaya@sirket.com",
"reason": "Toplantı",
"tckn": "12345678901",
"mac": "aa:bb:cc:dd:ee:ff"
}

TCKN aktarıldığında algoritmik checksum doğrulaması yapılır; denetim kaydında maskelenerek saklanır.

Idempotent Tasarım

Ağ hatası durumunda talep endpoint'i güvenle yeniden çağrılabilir. Aynı (mac, ssid, sponsor_email) kombinasyonuna ait aktif bekleyen bir talep varsa, yeni bir talep oluşturulmaz; mevcut request_id döndürülür:

{
"status": "pending",
"request_id": "req_7f3a9c12e4b8",
"message": "Mevcut aktif talep döndürüldü."
}

Konfigürasyon

Ayarlar → Kimlik Doğrulama → Sponsor bölümünden:

ParametreAçıklamaVarsayılan
SPONSOR_TOKEN_TTL_HOURSOnay bağlantısı geçerlilik süresi24
SPONSOR_POLL_INTERVAL_SECPortal polling aralığı5
SPONSOR_REQUIRE_TCKNTCKN zorunlu kılınsın mıfalse
SPONSOR_EMAIL_FROMGönderen e-posta adresinoreply@...
SPONSOR_MAX_PENDING_PER_MACBir MAC için eş zamanlı max bekleyen talep1

:::warning Güvenlik Notu Sponsor onay bağlantıları yalnızca bir kez kullanılabilir. Bağlantı tıklandıktan sonra token geçersiz hale gelir. Aynı bağlantının ikinci kez kullanılması 410 Gone yanıtı döndürür. :::

Kullanım Senaryoları

  • Kurumsal ofisler — Ziyaretçi kabul sürecini dijitalleştirir; güvenlik görevlisi araya girmeden çalışan onayı yeterlidir.
  • Devlet binaları — Kimlik doğrulama ve denetim kaydı yasal gereklilikleri karşılar.
  • Hastaneler — Hasta ziyaretçileri için bölüm personelinin onayı zorunlu tutulabilir.

Sorun Giderme

  • SMTP konfigürasyonunu kontrol edin (NAC_SMTP_* değişkenleri).
  • Sponsor'un kurumsal posta kutusunda spam filtresi olup olmadığını kontrol edin.
  • sponsor_email alanının geçerli bir kurumsal e-posta olduğundan emin olun (ücretsiz posta servislerini kısıtlamak için konsol'da e-posta domain izin listesi tanımlanabilir).

Talep Zaman Aşımına Uğradı

Talep expired durumuna geçtiyse misafirin yeni bir talep oluşturması gerekir. SPONSOR_TOKEN_TTL_HOURS değeri artırılarak bu sorun azaltılabilir; ancak güvenlik açısından 24 saatin üzerine çıkılması önerilmez.