Skip to content
ADR-0020Mimari karar kaydıKabul edildisürüm 1.0.02 Ekim 2026

Bağlam ​

Bugün barındırılan ihraçta Tamga, kurumun kişi kayıtlarını (öğrenciler) kendi veritabanında tutar (ADR-0019). Kayıtlar Kurum Konsolu'ndan girilir. Kişi cüzdandan belge isteyince kimliği bu kayıt defterinde aranır. Kurum teklif oluşturunca da kişi bu defterden seçilir.

Proje yönetimi (2026-09-29) bu yapıyı istemedi:

  • toplu öğrenci yüklemesi olmayacak,
  • "bizim veri ile işimiz yok",
  • yetkili kaynak kurumun kendi sistemidir (öğrenci bilgi sistemi),
  • teklif e-postasını kurum kendi gönderir,
  • öğrencinin cüzdandan isteyip Tamga'nın kuruma sorması onaylandı,
  • teklifin kişinin kimliğine bağlı olması onaylandı.

AB tarafında da bir PID (Person Identification Data)Devletin en yüksek güvence seviyesinde verdiği temel kimlik verisi. Tamga bu rolü üstlenmez; Tamga'nın kimlik belgesi PID değildir. ya da belge sağlayıcı, özniteliği yetkili kaynaktan (authentic source)Belgedeki bilginin asıl sahibi olan sistem; örneğin üniversitenin öğrenci bilgi sistemi. alır (ARF (Architecture and Reference Framework)Rolleri, mimariyi, güven modelini ve kuralları anlatan belge seti. Tamga ARF, AB ARF'sinin düzenini izler. konu 42; CIR 2025/1569). Kaynak veriyi aracının kalıcı olarak tutması beklenmez.

Karar ​

K1 — Yetkili kaynak ve kaynak bağlantısı ​

Her kurum için bir kaynak bağlantısı tanımlanır (tenants/<slug>.json → authentic_source):

  • remote (üretim): kurumun sorgu ucu. Tamga iki işlem ister:

    • lookup: kimlik anahtarlarıyla (T.C. kimlik no + doğum tarihi) arama → kurumun opak kişi kimliği (subject_ref) + belge bilgileri,
    • fetch: subject_ref ile belge bilgileri (yenileme ve kimliğe bağlı teklif için).

    İstek Tamga'nın kurum için kullandığı erişim anahtarıyla imzalı kısa ömürlü bir JWT'dir (aud = sorgu ucu, iat, jti); kurum isteği Tamga'nın güven listesindeki (trust list)Bir ülkenin kök sertifikalarını, belge verenlerini ve kayıtlı relying party'lerini taşıyan imzalı liste. Bugün Tamga'da güven bu listelere dayanır; ortak defter sonra gelir. sertifikasıyla doğrular. Yanıt ve biçim OpenAPI ile tanımlıdır.

  • sandbox (deneme): Kurum Konsolu'ndaki örnek kayıt defteri (ADR-0019 KC4). Yalnız deneme ve gösterim içindir; gerçek kişi verisiyle kullanılmaz.

K2 — Tamga ne tutar ​

  • Belge bilgileri (ad, program, not …) tutulmaz: imza anında kaynaktan okunur, belge verilince bellekten atılır.
  • Kalıcı olan yalnız kurumun opak subject_ref'i (verilen belge kaydında, iptal ve yenileme için) ve kimliğe bağlı teklifte eşleştirme anahtarlarının anahtarlı özetidir (HMAC; düz T.C. kimlik no yok).
  • Günlüklere kişi verisi yazılmaz (PR14 aynen).

K3 — Yol A: kurum başlatır, teklif kişinin kimliğine bağlıdır ​

  1. Kurumun sistemi Tamga API'sine (POST /{slug}/api/v1/offers, ADR-0016) şunları gönderir:
    • belge türü,
    • kurumun subject_ref'i,
    • eşleştirme anahtarları: bind { personal_administrative_number, birth_date }.
  2. Tamga bir kimliğe bağlı teklif üretir: OpenID4VCI (OpenID for Verifiable Credential Issuance)Belge verenin belgeyi cüzdana teslim ettiği protokol. authorization_code grant'ı, issuer_state = teklif kimliği. Yanıtta bağlantı ve QR gelir. E-postayı ya da mesajı kurum kendi gönderir; Tamga iletişim adresi görmez.
  3. Kişi bağlantıyı cüzdanda açar. Cüzdan PAR'daYetkilendirme isteğinin önce sunucuya gönderildiği OAuth adımı; içerik tarayıcı adresinde görünmez. issuer_state'i gönderir. Yetkilendirme sırasında kişi Tamga kimlik belgesini sunar (mevcut satır içi akış).
  4. Kurum belge vereni (issuer)Belgeyi imzalayıp veren kurum: üniversite, meslek kuruluşu, kamu kurumu ya da şirket. kimlik belgesini doğrular ve T.C. kimlik no + doğum tarihinin özetini teklifteki özetle karşılaştırır. Eşleşmezse belge verilmez. Teklifi başkası açsa bile belge alamaz.
  5. Belge bilgileri imza anında kaynaktan (fetch) okunur.
  6. tx_code'lu ön-yetkili teklif, kimlik belgesi olmayanlar için yedek olarak kalır. Kod teklifle aynı kanaldan gönderilmez (PR12).
  7. Teklif varsayılan olarak 7 gün geçerlidir ve tek kullanımlıktır.

K4 — Yol B: kişi başlatır ​

Kişi cüzdandan kurumu seçer ve kimliğini sunar. Kurum belge vereni kaynak bağlantısına lookup ile sorar (sandbox'ta kayıt defteri). Kayıt varsa belge verilir; kayıt yoksa "kurum kaydında bulunamadı" döner. Yanıt saklanmaz.

K5 — Yenileme ve iptal ​

Yenileme belirteci (ADR-0023) subject_ref taşır. Yenilemede fetch çağrılır; kişi kaynakta yoksa belirteç düşer (AR3). Kurum iptali API'den ya da Konsol'dan yapar (ADR-0016).

K6 — Kurum kiti ​

  • OpenAPI: Tamga API'si (teklif, iptal) ve kurumun sorgu ucu sözleşmesi.
  • Node SDK: @tamga-network/issuer/client'e kimliğe bağlı teklif eklenir.
  • Kendi sunucusunda belge veren çalıştırma seçeneği korunur (ADR-0016).

K7 — Kurum Konsolu ​

  • "Kayıt defteri" sekmesi "Örnek kaynak (deneme)" olur ve yalnız sandbox modunda görünür.
  • "Kurum kaydı" sekmesi kaynak bağlantısının türünü ve sorgu ucunu gösterir.

Değerlendirilen seçenekler ​

SeçenekSonuçNeden
Tamga'da kayıt defteri (bugünkü)ret (yalnız deneme)Tamga kişi verisi tutar; toplu yükleme gerekir
Kurum belge bilgilerini teklifle gönderir, Tamga saklarretBilgi teklif süresince Tamga'da durur; sorgu ucu varsa gereksiz
Teklifte yalnız subject_ref + kimlik özeti; bilgi imza anında kaynaktankabulTamga'da kalıcı kişi verisi yok; yenileme de aynı yoldan
Tamga teklif e-postasını gönderirretTamga iletişim adresi görür; proje yönetimi kurumun göndermesini istedi
Kimlik bağı yok, yalnız tx_coderet (yedek)Bağlantıyı ele geçiren belgeyi alabilir

Değişmezler ​

KodKural
AS1Barındırılan ihraçta belge bilgileri kalıcı olarak tutulmaz; imza anında yetkili kaynaktan okunur. Kalıcı olan yalnız kurumun opak kişi kimliği ve eşleştirme anahtarlarının anahtarlı özetidir.
AS2Kimliğe bağlı teklif, yalnızca sunulan kimlik belgesindeki eşleştirme anahtarları teklifteki özetle eşleşirse belgeye dönüşür.
AS3Tamga teklif için kişinin iletişim adresini almaz; bağlantıyı kurum iletir.
AS4sandbox kaynağı yalnız deneme içindir; gerçek kişi verisiyle kullanılmaz.

Sonuçlar ​

  • apps/issuer (operatör deposu): kaynak bağlantısı soyutlaması (sandbox / remote), kimliğe bağlı teklif (issuer_state), Yol B'de lookup, belge ucunda fetch, yenilemede fetch.
  • @tamga-network/issuer: createPar issuer_state; teklif nesnesi authorization_code grant'ı. wallet-core: teklif authorization_code grant'ı → issuer_state'li yetkilendirme.
  • ADR-0011 K3 ve ADR-0019 kayıt defteri maddeleri bu ADR ile daralır. SPEC-PROTO-0001 §3 ve §11.2 güncellenir.
  • OpenAPI dosyaları tamga-network/docs/api/.

Durum ​

Accepted — 2026-09-29. Proje yönetimi onayıyla (toplu yükleme yok; e-postayı kurum gönderir; Yol B; kimliğe bağlı teklif). DECISIONS: D-SRC-1.