---
url: 'https://www.corbado.com/tr/blog/webauthn-resident-key-kesfedilebilir-kimlik-bilgileri-passkeys'
title: 'WebAuthn Resident Key: Passkey Olarak Keşfedilebilir Kimlik Bilgileri'
description: 'WebAuthn sunucu ayarlarındaki yanlış yapılandırmalar, kullanıcı deneyimi sorunlarına yol açabilir ve mevcut passkey''leri bozabilir. Bu kılavuz, geliştiricilere WebAuthn sunucularını kurmalarında yardımcı olur.'
lang: 'tr'
author: 'Vincent Delitz'
date: '2025-08-20T15:39:05.742Z'
lastModified: '2026-03-27T07:08:48.831Z'
keywords: 'resident key, keşfedilebilir kimlik bilgisi, non-resident key, keşfedilemez kimlik bilgisi'
category: 'WebAuthn Know-How'
---

# WebAuthn Resident Key: Passkey Olarak Keşfedilebilir Kimlik Bilgileri

## 1. Giriş

[Passkeys](https://www.corbado.com/category/passkeys-strategy) ve temelindeki WebAuthn protokolü, kimlik
doğrulama dünyasında devrim yaratıyor. Ancak, bir WebAuthn sunucusunu doğru şekilde kurmak
zorlu bir iş olabilir. Yanlış yapılandırmalar yalnızca güvenlik açıkları oluşturmakla
kalmaz, aynı zamanda daha sonra değiştirmeniz gerektiğinde mevcut passkey'leri de
bozabilir. Bu blog yazısı, genellikle karmaşık olan WebAuthn özelliklerini daha iyi
anlamanıza yardımcı olacak ve kendi kullanım durumunuz için en iyi ayarların ne olduğu
konusunda tavsiyeler sunacaktır.

## 2. WebAuthn Ekosistemi

WebAuthn üç ana varlıkla çalışır:

- **Güvenen Taraf (Relying Party - RP):** Bu, bir kullanıcıyı doğrulamak isteyen web
  hizmetimizdir. İstemciye zorluk (challenge) gönderir, yanıtları doğrular ve bir
  passkey'in açık anahtarını yönetir.
- **Doğrulayıcılar (Authenticators):** Bunlar, bir kimlik bilgisine sahip olunduğunu
  kanıtlayabilen cihazlardır. Örnek olarak akıllı telefonlar, dizüstü bilgisayarlar veya
  güvenlik anahtarları (örneğin, YubiKeys) verilebilir. Doğrulayıcılar platforma özgü
  ([Windows Hello](https://www.corbado.com/glossary/windows-hello) veya Apple'ın Touch ID /
  [Face ID](https://www.corbado.com/faq/is-face-id-passkey)'si gibi) veya platformlar arası (güvenlik anahtarları
  gibi, örn. YubiKeys) olabilir.
- **İstemciler (Clients):** Genellikle, bunlar RP ve doğrulayıcı arasında aracı olarak
  hareket eden web tarayıcıları veya yerel uygulamalardır. Verilerin doğru ve güvenli bir
  şekilde akmasını sağlayarak iletişimi kolaylaştırırlar.

Aşağıda, bir [kimlik doğrulama](https://www.corbado.com/tr/blog/digital-credentials-api) süreci (oturum açma veya
kaydolma) sırasındaki üst düzey veri akışı açıklanmaktadır.

1. **İstemci Başlatması:** Süreç, genellikle bir kullanıcının oturum açmaya veya
   kaydolmaya çalışmasıyla istemci tarafında başlar. Örneğin, "WebAuthn ile Giriş Yap"
   düğmesine tıklayabilirler ve istemci, RP'ye bir zorluk (challenge) talebi gönderir.
2. **RP İsteği:** RP daha sonra istemciye bir zorluk (challenge) geri gönderir. Bu zorluk,
   sonraki yanıtın gerçekliğini sağlayan rastgele oluşturulmuş bir değerdir.
3. **İstemciden Doğrulayıcıya:** Kaydolma sırasında, istemci doğrulayıcıdan ilgili
   açık-özel anahtar çiftini oluşturarak yeni bir passkey oluşturmasını ister. Oturum açma
   sırasında, istemci doğrulayıcıdan zorluğu imzalamasını ister. Bu, doğrulayıcıdaki özel
   anahtar kullanılarak yapılır ve bu anahtar, daha önce RP'de saklanan kayıtlı bir açık
   anahtara karşılık gelir.
4. **Doğrulayıcı Yanıtı:** Kaydolma sırasında, doğrulayıcı açık anahtarı istemciye geri
   gönderir. Oturum açma sırasında, doğrulayıcı zorluğu imzalar ve bu imzalanmış
   onaylamayı (assertion) istemciye geri gönderir.
5. **İstemciden RP'ye:** İstemci, bu yeni açık anahtarı / imzalanmış onaylamayı
   (assertion) RP'ye iletir.
6. **RP Doğrulaması:** RP, açık anahtarı saklar / imzalanmış onaylamayı (assertion)
   saklanan açık anahtarı kullanarak doğrular. Eğer geçerliyse,
   [kimlik doğrulama](https://www.corbado.com/tr/blog/digital-credentials-api) başarılı olur.

## 3. Passkey'lere Derinlemesine Bakış

Yukarıda açıklanan üst düzey süreç akışı, WebAuthn kaydolma ve oturum açma süreçlerini
tanımlar. [Passkey'ler](https://www.corbado.com/tr/blog/tamamen-sifresiz-sisteme-nasil-gecilir), WebAuthn üzerine
inşa edilmiştir. Başlangıçta passkey terimi, WebAuthn'dan daha akılda kalıcı ve teknik
olmayan bir terim olarak aynı şeyi tanımlamak için kullanılıyordu. Ayrıca,
[passkey'ler](https://www.corbado.com/tr/blog/tamamen-sifresiz-sisteme-nasil-gecilir) standart WebAuthn'a kıyasla
daha fazla özellik sunar, örneğin passkey'leri bulut hesapları veya parola yöneticileri
aracılığıyla senkronize etme imkanı.

Sonraki bölümleri daha iyi anlamak için, WebAuthn protokolündeki bazı önemli terimleri
ortak bir anlayışa sahip olmak adına tanımlayalım.

- **Kimlik Bilgisi ID'si (Credential ID):**
  [Credential ID](https://www.corbado.com/blog/webauthn-user-id-userhandle), bir doğrulayıcı tarafından
  oluşturulan belirli bir açık anahtar kimlik bilgisine atanan benzersiz bir
  tanımlayıcıdır. Güvenen Tarafların (RP'ler),
  [kimlik doğrulama](https://www.corbado.com/tr/blog/digital-credentials-api) süreçleri için doğru
  PublicKeyCredential'ı tanımlamasına ve seçmesine olanak tanır.
- **PublicKeyCredential:** Bu, tarayıcının veya yerel uygulamaların WebAuthn API'sinden
  döndürülen birincil veri yapısıdır. Hem kaydolma sırasındaki
  [Attestation](https://www.corbado.com/glossary/attestation) verilerini hem de oturum açma sırasındaki
  [Assertion](https://www.corbado.com/glossary/assertion) verilerini kapsar. Esasen, RP'nin süreci doğrulamak
  için ihtiyaç duyduğu verileri içerir.
- **Attestation:** WebAuthn bağlamında [Attestation](https://www.corbado.com/glossary/attestation),
  doğrulayıcının kökeninin ve bütünlüğünün bir kanıtı olarak hizmet eder. Kaydolma
  sırasında, doğrulayıcının "Kullanıcının kimlik bilgisini güvenli bir şekilde kaydettim
  ve işte bunu doğrulamanız için kullanabileceğiniz bir beyan" demesinin bir yoludur.
  Güvenen Taraf daha sonra imzanın izin verilen belirli bir doğrulayıcıdan (örneğin,
  [Yubikey](https://www.corbado.com/glossary/yubikey)) geldiğini doğrulayabilir. Tüm passkey doğrulayıcıları
  böyle bir [attestation](https://www.corbado.com/glossary/attestation) ile yanıt vermez, bazıları sadece yararlı
  veri geri göndermez (passkey doğrulayıcılarının listesi için
  [buraya](https://github.com/passkeydeveloper/passkey-authenticator-aaguids/blob/main/aaguid.json)
  bakın). Daha fazla doğrulayıcıyı (özellikle güvenlik anahtarları, örn. YubiKeys)
  tanımlayan [AAGUID](https://www.corbado.com/glossary/aaguid)'ler (Authenticator Attestation GUIDs)
  [FIDO Alliance Metadata Service](https://fidoalliance.org/metadata/) içinde bulunabilir.
- **Assertion:** Kaydolma işleminden sonra, bir kullanıcı oturum açmaya çalıştığında,
  doğrulayıcı bir onaylama (assertion) üretir. [Assertion](https://www.corbado.com/glossary/assertion) temel
  olarak PublicKeyCredential + imzalanmış zorluktur. Bu [assertion](https://www.corbado.com/glossary/assertion),
  kullanıcının gerçek özel anahtarı ifşa etmeden kayıtlı açık anahtarla bağlantılı özel
  anahtara sahip olduğunu kanıtlar. Bu, doğrulayıcının "Bu gerçek kullanıcı ve ben onlara
  kefil olabilirim" demesinin bir yoludur.

## 4. Resident Key ve Non-Resident Key Nedir?

[Resident key](https://www.corbado.com/blog/webauthn-resident-key-discoverable-credentials-passkeys)'ler (RKs) ve
non-[resident key](https://www.corbado.com/blog/webauthn-resident-key-discoverable-credentials-passkeys)'ler
(NRKs), WebAuthn protokolünde kullanılan iki tür kriptografik anahtardır ve temel olarak
depolama konumları ve geri alma mekanizmalarında farklılık gösterirler.

### 4.1 Resident Key'ler (RKs)

**Tanım:**

[Resident key](https://www.corbado.com/blog/webauthn-resident-key-discoverable-credentials-passkeys)'ler doğrudan
doğrulayıcının kendisinde saklanır. Bu bir güvenlik anahtarı (örneğin,
[YubiKey](https://www.corbado.com/glossary/yubikey)), bir platformun güvenli bölgesi (örneğin, iPhone'un
[Secure Enclave](https://www.corbado.com/glossary/secure-enclave)) veya bir dizüstü bilgisayardaki güvenilir
platform modülü (TPM) olabilir.
[Koşullu Arayüz (passkey otomatik doldurma)](#conditional-ui-passkey-autofill) yalnızca
resident key'ler için çalışır ve WebAuthn çalışma grubu şu anda bir anahtarın passkey
olarak kabul edilmesi için resident key olmasını gerektirmektedir.

> Resident key'lere genellikle keşfedilebilir kimlik bilgileri de denir, çünkü istemci söz
> konusu Güvenen Taraf ID'si (rpID) ile eşleşen doğrulayıcıdan olası anahtarların bir
> listesini keşfedebilir ve cihazda saklanan olası/kayıtlı kullanıcı tanıtıcılarını
> (örneğin, e-posta, telefon numaraları, kullanıcı adları) bir liste halinde gösterebilir.

Bir sonraki ekran görüntüsünde, bir [YubiKey](https://www.corbado.com/glossary/yubikey) üzerinde depolanan tüm
resident key'lerin (kimlik bilgisi ID'si, rpID, kullanıcı adı, görünen ad) bir listesini
görüyorsunuz. Non-resident key'ler listede yer almaz, çünkü doğrulayıcıda depolanmazlar:

![Yubikey Manager Resident Keys](https://www.corbado.com/website-assets/6517dbcd905582d132f08cc2_yubikey_manager_fido_discoverable_credentials_3f3f110283.png)

**Oturum açma akışı:**

![WebAuthn Resident key akışı](https://www.corbado.com/website-assets/65170ca733125d4a5908b0c2_webauthn_resident_key_flow_bd5ddbfb26.png)_Kaynak:
[William Brown](https://fy.blackhats.net.au/blog/2023-02-02-how-hype-will-turn-your-security-key-into-junk/)_

Oturum açma işlemi sırasında, Güvenen Taraf istemciye (tarayıcı) kimlik bilgisi
belirtmeden bir istek gönderir ve istemci doğrulayıcıyı sorgulamaya başlar (buradaki
şemada: güvenlik anahtarı). Doğrulayıcı, ilgili Güvenen Taraf için tüm resident key'leri
keşfeder ve istemci (tarayıcı) istenen resident key'i seçer. Bu resident key, zorluğu
imzalamak için kullanılır. İmza, doğrulayıcıdan istemci aracılığıyla Güvenen Tarafa
gönderilir.

**Avantajları:**

1. **Kolaylaştırılmış Kullanıcı Deneyimi:** Resident key'lerin en önemli avantajlarından
   biri, doğrulayıcının kullanıcı tanıtıcısını (örneğin, e-posta, telefon numarası,
   kullanıcı adı) saklaması ve böylece giriş için kullanıcı tanıtıcısını (örneğin,
   e-posta, telefon numarası, kullanıcı adı) önceden doldurabilmesidir. Kullanıcıların
   kullanıcı tanıtıcılarını (örneğin, e-posta, telefon numarası, kullanıcı adı)
   hatırlamasına veya girmesine gerek kalmaz, bu da özellikle biyometrik özelliklere sahip
   cihazlarda oturum açma sürecini kolaylaştırır. Bu, Koşullu Arayüz ile otomatik olarak
   da gerçekleşebilir.
2. **Cihaza Özgü Kimlik Doğrulama:** Resident key'ler, kimlik doğrulamayı belirli bir
   cihaza bağlayarak ek bir güvenlik katmanı sağlayabilir. Bu, özellikle kullanıcıların
   güvenilir cihazlardan giriş yapmasını sağlamak isteyen hizmetler için yararlı olabilir.
3. **Koşullu Arayüz (Passkey Otomatik Doldurma):** Koşullu Arayüz yalnızca en sorunsuz
   oturum açma deneyimini sağlayan resident key'lerle çalışır (ayrıntılar için
   [aşağıya](#conditional-ui-passkey-autofill) bakın).

**Dezavantajları:**

1. **Depolama Sınırlaması:** Bazı doğrulayıcıların sınırlı bir depolama kapasitesi vardır.
   Özellikle güvenlik anahtarları (örneğin, YubiKey'ler) için, depolayabilecekleri
   resident key sayısında genellikle bir sınır vardır (çoğunun sınırı 8 ila \~100 resident
   key arasında değişir). Bu sınıra ulaşıldığında, yenilerine yer açmak için eski
   anahtarların silinmesi gerekebilir veya kullanıcının başka bir doğrulayıcı kullanması
   gerekebilir.
2. **Doğrulayıcının Kaybı:** Doğrulayıcı, örneğin bir güvenlik anahtarı (örn. YubiKey)
   veya akıllı telefon kaybolur veya hasar görürse, o cihazdaki tüm resident key'ler
   kaybolur. Bu, kullanıcıların hesaplarını yeniden kaydettirene veya kurtarana kadar
   birden fazla hizmetten dışlanmasına neden olabilir. Anahtarları bir bulut hesabı
   (örneğin, iCloud Anahtar Zinciri,
   [Google Şifre Yöneticisi](https://www.corbado.com/tr/blog/google-sifre-yoneticisi-nasil-kullanilir)) veya
   modern bir şifre yöneticisi (örneğin,
   [1Password](https://www.corbado.com/blog/1password-passkeys-best-practices-analysis) veya
   [Dashlane](https://www.corbado.com/blog/dashlane-passkeys)) aracılığıyla senkronize etmek bu kaybı önler.
3. **Güvenlik Endişeleri:** Resident key'lere sahip bir doğrulayıcı çalınırsa, bir
   saldırgan anahtarları çıkarmaya çalışabilir. Modern doğrulayıcılar çıkarmayı önlemek
   için sağlam güvenlik mekanizmalarına sahip olsa da, örneğin kullanıcının cihazı güçlü
   bir PIN, parola veya hareketle koruması gibi, risk, minimal de olsa, hala mevcuttur.

**Kullanım Alanları:** Kişisel akıllı telefonlar veya dizüstü bilgisayarlar gibi
kullanıcının sık sık kimlik doğruladığı cihazlar için idealdir.

### 4.2 Non-Resident Key'ler (NRKs)

**Tanım:**

Non-resident key'ler, aksine, doğrulayıcıda saklanmaz. Bunun yerine, doğrulayıcı yeni bir
anahtar çifti oluşturur (dahili olarak korunan ana anahtarına dayanarak) ve bu yeni
anahtar çiftinin açık anahtarını, kimlik bilgisi ID'si (bir tohum - seed içeren) ile
birlikte sunucuya (Güvenen Taraf) gönderir. Sunucu daha sonra bu açık anahtarı
kullanıcının hesabıyla ilişkilendirir. Sonraki kimlik doğrulamalar için, doğrulayıcı,
kimlik bilgisi ID'sini alarak, tohumu çıkararak ve ana anahtarla birleştirerek özel
anahtarı yeniden türetir. Anahtar yalnızca doğrulayıcının korumalı belleğinde geçici
olarak mevcut olduğu için kriptografik dilde bazen geçici anahtar (ephemeral key) olarak
adlandırılır.

> Non-resident key'lere genellikle keşfedilemez kimlik bilgileri de denir, çünkü
> doğrulayıcı belirli bir Güvenen Taraf ID'si (rpID) için anahtarları keşfedemez /
> arayamaz. Kimlik bilgisi ID'si olmadan, doğrulayıcı bir anahtarın olabileceğini bile
> bilmez.

**Oturum açma akışı:**

![WebAuthn Non-resident key akışı](https://www.corbado.com/website-assets/65170dade63f226249823f7d_webauthn_non_resident_key_flow_09fc4da6c1.png)_Kaynak:
[William Brown](https://fy.blackhats.net.au/blog/2023-02-02-how-hype-will-turn-your-security-key-into-junk/)_

Oturum açma işlemi sırasında, Güvenen Taraf öncelikle hangi kullanıcının kimlik
doğrulaması istediğini tanımlamalıdır (örneğin, bir kullanıcı tanıtıcısı - e-posta,
telefon numarası veya kullanıcı adı - isteyerek) ve ardından istekte bulunan kullanıcı
için bildiği kimlik bilgisi ID'lerini istemciye (tarayıcı) gönderir. İstemci bunları
doğrulayıcıya (burada: güvenlik anahtarı) iletir. Doğrulayıcı, geçici özel anahtarı
türetmek için doğrulayıcının ana anahtarıyla birlikte kimlik bilgisi ID'sini kullanır,
zorluğu oluşturulan anahtarla imzalar ve istemciye (burada: tarayıcı) geri gönderir, o da
bunu Güvenen Tarafa iletir. Non-resident key'ler, passkey'lerin tanıtımından önce
başlangıçta ikinci faktör olarak kullanılıyordu. Bu nedenle, önce kullanıcıyı tanımlamak
normal oturum açma sürecinin bir parçasıydı.

**Avantajları:**

1. **Ölçeklenebilirlik:** Non-resident key'ler doğrulayıcıda bulunmadığından, kullanıcılar
   çeşitli hizmetlerle ilişkili neredeyse sınırsız sayıda non-resident key'e sahip
   olabilirler. Bu, özellikle çok sayıda platformda hesabı olan kullanıcılar için
   faydalıdır.
2. **Dolaşım Yeteneği:** Non-resident key'ler, güvenlik anahtarları (örneğin, YubiKey)
   gibi dolaşımdaki doğrulayıcılar için idealdir. Bir kullanıcı, birden fazla cihaz ve
   platformda kimlik doğrulamak için aynı güvenlik anahtarını (örneğin, YubiKey)
   kullanarak tutarlı bir deneyim sağlayabilir.
3. **Doğrulayıcı Depolamasına Azaltılmış Bağımlılık:** Uygun WebAuthn sunucu ayarları
   için, doğrulayıcının depolama sınırlamaları hakkında endişelenmenize gerek yoktur. Bu,
   özellikle güvenlik anahtarları (örneğin, YubiKey'ler) gibi düşük depolama kapasiteli
   doğrulayıcılar için avantajlı olabilir.

**Dezavantajları:**

1. **Kullanıcı Tanıtıcısı Gerektirdiği İçin Daha Az Kullanıcı Deneyimi:** Non-resident
   key'lerin en büyük dezavantajı, kullanıcının kullanıcı tanıtıcısını (örneğin, e-posta,
   telefon numarası, kullanıcı adı) sağlaması gerekmesidir, bu da Koşullu Arayüz
   aracılığıyla bir kullanıcı adı ön doldurmasını imkansız hale getirir. Bu kullanıcı
   tanıtıcısının,
   [geçici anahtar sarmalanmış anahtarı](https://github.com/w3c/webauthn/issues/1612#issuecomment-840961012)
   hesaplamak için gereken kimlik bilgisi ID'sine bağlanması gerekir.
2. **Potansiyel Yanlış Yönetim:** RP'ler, kullanıcı hesapları ve açık anahtarlar
   arasındaki ilişkileri yönetmeli ve güvence altına almalıdır. Kötü yönetim veya güvenlik
   açıkları güvenlik sorunlarına yol açabilir.

**Kullanım Alanları:** Birden fazla hizmet veya platformda kullanılan güvenlik anahtarları
(örneğin, YubiKey'ler) gibi dolaşımdaki doğrulayıcılar için idealdir.

### 4.3 Örnek

Bir güvenlik anahtarınız (örneğin, YubiKey) olduğunu ve bunu iki çevrimiçi hizmetle
kaydettirdiğinizi hayal edin: Hizmet A ve Hizmet B. Hizmet A için bir resident key
kullanıyorsunuz. Hizmet B için ise bir non-resident key. Hizmet A'ya kimlik
doğruladığınızda, sadece güvenlik anahtarınıza (örneğin, YubiKey) dokunursunuz ve giriş
yaparsınız - kullanıcı adı belirtmenize gerek kalmaz. Hizmet B için ise, önce tarayıcıda /
yerel uygulamada kullanıcı adınızı sağlarsınız. Hizmet daha sonra ilgili kimlik bilgisi
ID'sini güvenlik anahtarınıza (örneğin, YubiKey) gönderir, bu da kimlik doğrulama için
geçici özel anahtarı yeniden oluşturur.

Özünde, hem resident hem de non-resident key'ler kriptografik kimlik doğrulamadan
yararlanarak güvenliği artırırken, kullanıcı deneyimleri ve depolama mekanizmaları
farklılık göstererek çeşitli kullanım durumlarına hitap eder.

## 5. Koşullu Arayüz ("Passkey Otomatik Doldurma")

Koşullu Arayüz, passkey'lerin / WebAuthn'ın bir dönüm noktası özelliğidir. Kullanıcıdan
daha da fazla yük alır, çünkü kullanıcı sadece bir şifre hatırlamak zorunda kalmaz, aynı
zamanda bir Güvenen Tarafa kaydolduğu kullanıcı tanıtıcısını (örneğin, e-posta, telefon
numarası, kullanıcı adı) da hatırlamak zorunda kalmaz. Özellikle, Güvenen Tarafların
hizmetlerinin yalnızca ara sıra kullanıldığı durumlarda bu büyük bir adımdır.

Bu, giriş sayfası açılır açılmaz, Güvenen Taraf sunucusunun arka planda istemciye bir
zorluk göndermesiyle çalışır (bu çağrıda gönderilmesi gereken bir kimlik bilgisi ID'si
olmadığını unutmayın). İstemci bu zorluğu alır ve bu doğrulayıcıdaki Güvenen Taraf
ID'siyle hangi passkey'lerin eşleştiğini kontrol eder ve kullanıcıya uygun passkey'i
seçebileceği otomatik doldurma menüsü aracılığıyla seçimi sunar.

Üstelik, kullanıcıyı giriş düğmesine fazladan bir tıklamadan da kurtarır, çünkü passkey
otomatik doldurma menüsünden seçilir seçilmez giriş işlemi başlar.

> Koşullu Arayüz (passkey otomatik doldurma) yalnızca resident key'lerle çalışır.

## 6. İstemciden Doğrulayıcıya Protokolü (CTAP)

CTAP, [FIDO2](https://www.corbado.com/glossary/fido2) standardında temel bir protokoldür ve istemciler
(tarayıcılar gibi) ile doğrulayıcılar (güvenlik anahtarları, örn. YubiKey'ler veya akıllı
telefonlar gibi) arasındaki iletişim boşluğunu doldurur. CTAP'ı daha iyi anlamak için,
resident ve non-resident key'ler üzerindeki etkisini analiz etmeden önce farklı protokol
sürümlerine kısa bir göz atalım.

### 6.1 CTAP1 (U2F)

Genellikle Evrensel 2. Faktör (U2F) olarak adlandırılan daha önceki sürüm, öncelikle
ikinci faktör kimlik doğrulaması için tasarlanmıştı. U2F'de, sunucu bir zorluk sağlar ve
doğrulayıcı, özel anahtara sahip olduğunu kanıtlayan bir yanıt verir. Ancak, U2F resident
key'leri desteklemez, yani bir kullanıcı için hangi anahtarın kullanılacağını belirlemek
için her zaman sunucu tarafında bir arama gerektirir, çünkü bu ikinci bir faktör
istendiğinde sürecin bir parçasıydı.

### 6.2 CTAP2

U2F'nin halefi olan CTAP2, resident key'ler için destek sunarak şifresiz ve kullanıcı
adısız kimlik doğrulamasına olanak tanıdı. Resident key'lerle, doğrulayıcı kullanıcının
kullanıcı adını ve kimlik bilgisi ID'sini ( Güvenen Taraf ID'si ile birlikte) saklar, bu
da Güvenen Taraf sunucusunun kimlik doğrulama sırasında bunu sağlaması gerekliliğini
ortadan kaldırır. Bu, daha sorunsuz bir kullanıcı deneyimine doğru önemli bir adımdır.

Ancak, CTAP2 zorluklarla birlikte gelir. Dikkate değer bir sorun, resident key'lerin
yönetimidir. Örneğin, bir CTAP2.0 cihazında belirli bir resident key'i silmek genellikle
tam bir cihaz sıfırlaması gerektirir (yani ana anahtarınız da sıfırlanır, bu da tüm
non-resident key'lerinizin artık çalışmayacağı anlamına gelir), bu kullanıcı dostu
değildir ve tek bir cihazda birden fazla resident key'in saklandığı senaryolarda sorunlu
olabilir. Bu, bir CTAP2.0 cihazındaki resident key'leri ciddi bir taahhüt haline getirir.
Özellikle güvenlik anahtarlarında (örneğin, YubiKey'ler) sıkça sahip olduğunuz o sınırlı
alanı yanlışlıkla doldurmak istemezsiniz.

### 6.3 CTAP2.1

CTAP2.1, CTAP2'nin bir sonraki sürümüdür ve protokole ek özellikler ve iyileştirmeler
getirir. CTAP 2.1 ile ilgili bazı önemli noktalar şunlardır:

- **Daha İyi Resident Key Yönetimi:** CTAP 2.1, cihazınızdaki belirli resident key'leri
  bireysel olarak yönetmenize, güncellemenize ve silmenize olanak tanır.
- **Kurumsal Attestation:** Bu özellik, işletmelerin çalışanları tarafından kullanılan
  anahtarlar üzerinde daha fazla kontrole sahip olmalarını sağlar. İşletmelerin kullanılan
  anahtarların şirket tarafından verildiğini doğrulaması için bir yol sunar.
- **Çoklu Kullanıcı Tanıma:** Bazı doğrulayıcılar birden fazla kullanıcıyı tanıyabilir.
  CTAP 2.1, bu doğrulayıcıların hangi kullanıcının tanındığını belirtmesi için bir yol
  sağlar.
- **Geriye Dönük Uyumluluk:** CTAP 2.1, CTAP2 ile geriye dönük uyumlu olacak şekilde
  tasarlanmıştır, bu da eski sürümü destekleyen cihazların ve platformların yenisiyle hala
  çalışabilmesini sağlar.

## 7. WebAuthn Sunucu Seçenekleri

Resident key'lere, non-resident key'lere ve farklı CTAP sürümlerine göz attıktan sonra,
şimdi Güvenen Taraf tarafını ve dolayısıyla WebAuthn sunucu tarafını daha derinlemesine
analiz ediyoruz.

WebAuthn'ın esnekliği (ama aynı zamanda karmaşıklığı da) büyük ölçüde sunucu ayarlarına,
özellikle de [authenticatorSelection](https://www.corbado.com/glossary/authenticatorselection) nesnesine
atfedilir. Bu nesne, istemciye iş için doğru doğrulayıcıyı seçmesinde rehberlik eder.

```json
{
    "rp": {
        "name": "corbado.com",
        "id": "corbado.com"
    },
    "user": {
        "id": "dGVzdefEyMjE",
        "name": "test-username",
        "displayName": "test-username"
    },
    "challenge": "mhanjsapJjCNaN_Ttasdfk1C0DymR-V_w_0UVOPsdfdfJG2ON_FK5-ODtqp33443tgqHzuuDjv-NUUmMAE4hg",
    "pubKeyCredParams": [
        {
            "type": "public-key",
            "alg": -7
        },
        {
            "type": "public-key",
            "alg": -257
        }
    ],
    "timeout": 60000,
    "excludeCredentials": [],
    "authenticatorSelection": {
        "authenticatorAttachment": "platform",
        "residentKey": "preferred",
        "requireResidentKey": false,
        "userVerification": "preferred"
    },
    "attestation": "none",
    "extensions": {
        "credProps": true
    }
}
```

### 7.1 WebAuthn Sunucu Seçeneği: Doğrulayıcı Eklentisi (Authenticator Attachment)

Bu sunucu seçeneği, doğrulayıcının istemci cihazına nasıl eklendiğini belirtir.
Doğrulayıcının istemciyle nasıl iletişim kurduğuna dair bilgiler sağlar:

**Olası Değerler**

- **Platform:** Bu, doğrulayıcının istemcinin platformuna bağlı olduğunu ve dolayısıyla
  çıkarılamaz olduğunu gösterir.
- **Cross-platform:** Bu, doğrulayıcının istemcinin platformuna bağlı olmadığını ve birden
  fazla cihazda kullanılabileceğini gösterir.

**Kullanım Alanları ve Örnekler**

- **Platform:** Örnekler arasında bir dizüstü bilgisayara yerleşik bir parmak izi okuyucu
  veya bir telefondaki yüz tanıma sistemi, örneğin [Face ID](https://www.corbado.com/faq/is-face-id-passkey),
  Touch ID veya [Windows Hello](https://www.corbado.com/glossary/windows-hello) bulunur.
- **Cross-platform:** Örnekler arasında USB güvenlik anahtarları (örneğin, YubiKey'ler),
  Bluetooth cihazları veya NFC kartları bulunur.

### 7.2 WebAuthn Sunucu Seçeneği: Resident Key

WebAuthn Seviye 1 belirtiminde, bu sunucu seçeneği requireResidentKey olarak
adlandırılıyordu ve Boolean değerleri olan true (doğrulayıcı bir resident key
oluşturmalıdır) veya false (doğrulayıcı bir non-resident key oluşturmalıdır) değerlerini
alabiliyordu.
[WebAuthn Seviye 2](https://developers.yubico.com/WebAuthn/Concepts/WebAuthn_Level_2_Features_and_Enhancements.html)
bu sunucu seçeneğini yeni residentKey sunucu seçeneği ile değiştirdi:

**Olası Değerler**

- **Required (Gerekli):** Doğrulayıcı bir resident key oluşturmalıdır (mümkün değilse
  işlem başarısız olmalıdır).
- **Preferred (Tercih Edilen):** Doğrulayıcı bir resident key oluşturmaya çalışmalıdır
  (mümkün değilse bir non-resident key oluşturmalıdır).
- **Discouraged (Önerilmeyen):** Doğrulayıcı bir non-resident key oluşturmalıdır (mümkün
  değilse işlem başarısız olmalıdır).

**Kullanım Alanları ve Örnekler**

- **Required:** Kullanıcı adısız istenen veya kullanıcıların yalnızca daha önce
  kaydedilmiş cihazlardan kimlik doğrulaması yapması gereken senaryolar için idealdir
  (kullanıcının kimlik bilgisini belirli bir cihaza bağlayarak ekstra bir güvenlik katmanı
  ekleyerek).
- **Preferred:** Web hizmetinin mümkünse en iyi oturum açma kullanıcı deneyimini (resident
  key'ler aracılığıyla) sunmak istediği, ancak resident key'lerin mümkün olmadığı
  durumlarda non-resident key'leri de desteklemek istediği senaryolar için uygundur.
- **Discouraged:** Bir hizmet, passkey ile kimlik doğrulama sunmak ve aynı zamanda
  kullanıcıların depolama kapasitesi olmayanlar da dahil olmak üzere herhangi bir
  doğrulayıcıyı, kimlik bilgisini belirli bir cihaza bağlamadan kullanabilmelerini
  sağlamak istiyor.

### 7.3 WebAuthn Sunucu Seçeneği: Kullanıcı Doğrulaması (User Verification)

Kullanıcı doğrulaması, doğrulayıcıyla etkileşime giren kişinin meşru sahip olduğundan emin
olma sürecini ifade eder; genellikle PIN girme, parmak izi sağlama veya yüz tanıma
kullanma gibi belirli bir kimlik doğrulama hareketi gerektirir.

Bazen kullanıcı varlığı (UP - [user presence](https://www.corbado.com/blog/webauthn-user-verification)),
kullanıcı doğrulaması ile benzer şekilde bahsedilir veya kullanılır ancak bazı
farklılıkları vardır. Kullanıcı varlığı yalnızca birinin -herhangi birinin- fiziksel
olarak mevcut olduğunu ve cihazla etkileşimde bulunduğunu doğrular. O kişinin kimliğini
doğrulamaz. Başka bir kimlik kontrolü olmaksızın bir güvenlik anahtarına basit bir
dokunuş, kullanıcı varlığı için yeterli olabilir.
[Passkey'ler](https://www.corbado.com/tr/blog/tamamen-sifresiz-sisteme-nasil-gecilir) / WebAuthn için,
kullanıcının her zaman mevcut olması gerekir.

**Olası Değerler**

- **Required (Gerekli):** İşlemde kullanıcı doğrulaması olmalıdır.
- **Preferred (Tercih Edilen):** İşlemde mümkünse kullanıcı doğrulaması olmalıdır, ancak
  onsuz da devam edebilir.
- **Discouraged (Önerilmeyen):** İşlemde kullanıcı doğrulaması olmamalıdır.

**Kullanım Alanları ve Örnekler**

- **Required:** [Bankacılık](https://www.corbado.com/passkeys-for-banking) veya
  [sağlık](https://www.corbado.com/passkeys-for-healthcare) gibi yüksek güvenlikli uygulamalar için idealdir,
  burada kullanıcının kimliğini (örneğin, bir parmak izi veya PIN aracılığıyla) doğrulamak
  çok önemlidir.
- **Preferred:** Ekstra güvenliğin bir bonus olduğu ancak kesinlikle gerekli olmadığı
  genel uygulamalar için kullanışlıdır.
- **Discouraged:** Düşük riskli işlemler veya kullanıcı doğrulamasının bir rahatsızlık
  olabileceği senaryolar için uygundur.

### 7.4 Yaygın WebAuthn Sunucu Seçeneği Kalıpları

#### 7.4.1 Face ID / Touch ID ile Passkey'ler Aracılığıyla Şifresiz Giriş

**Kalıp**

- Doğrulayıcı eklentisi: platform
- Resident key: required
- Kullanıcı doğrulaması: required

**Örnek:** Bir kurumsal uygulama, çalışanların şirket tarafından verilen dizüstü
bilgisayarlarında yerleşik parmak izi okuyucularını kullanarak şifre olmadan giriş
yapmalarını ister. Kimlik bilgisi cihazda saklanır ve kullanıcının her seferinde bir
parmak izi ile doğrulaması gerekir.

#### 7.4.2 Güvenlik Anahtarları ile Şifresiz Giriş

**Kalıp**

- Doğrulayıcı eklentisi: cross-platform
- Resident key: required
- Kullanıcı doğrulaması: required

**Örnek:** Bir kullanıcı, çevrimiçi [bankacılık](https://www.corbado.com/passkeys-for-banking) için bir güvenlik
anahtarı (örneğin, YubiKey) kaydeder. Bu anahtarı, kullanıcı adı girmesine gerek kalmadan
güvenlik anahtarını (örneğin, YubiKey) sağlayarak herhangi bir cihazda kimlik doğrulamak
için kullanabilir.

## 8. Potansiyel Zorluklar ve Çözümler

### 8.1 Zorluk 1: Güvenlik Anahtarlarının Depolama Sınırlamaları

Birçok donanım tabanlı güvenlik anahtarının (örneğin, YubiKey'ler) doğasında depolama
kısıtlamaları vardır. Bu sınırlama, cihazdaki fiziksel bellek ve üreticinin tasarım
considerations bağlıdır.

**Örnek:** Bir YubiKey yalnızca 20 resident key saklama kapasitesine sahip olabilir. Bu
sınıra ulaşıldığında, mevcut olanları silmeden ek resident key'ler eklenemez.

**Çözüm:**

- **Resident Key'lerin Seçici Kullanımı:** Her kullanıcı için resident key kullanmak
  yerine, bunları belirli roller veya senaryolar için düşünün. Örneğin, gelişmiş güvenlik
  gerektiren yönetici rolleri veya yüksek ayrıcalıklı kullanıcılar için resident key'lere
  öncelik verin.
- **Kullanıcı Eğitimi:** Kullanıcıları güvenlik anahtarlarının (örneğin, YubiKey'ler)
  sınırlamaları hakkında bilgilendirin. Onları sınırsız resident key kullanabilen
  cihazlara, örneğin dizüstü bilgisayarlara veya akıllı telefonlara geçmeye teşvik edin.

### 8.2 Zorluk 2: Doğrulayıcılar Arasında Tutarsız Davranış

Farklı doğrulayıcılar, resident key isteklerini farklı şekilde işleyebilir. Bazıları
açıkça istenmese bile varsayılan olarak bir resident key oluşturabilirken, diğerleri açık
talimat gerektirebilir.

Farklı WebAuthn sunucu seçeneklerinin farklı platformlardaki tutarsız davranışı büyük bir
sorundur. Örneğin, [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios), iletilen WebAuthn sunucu
seçeneklerinden bağımsız olarak her zaman bir resident key oluştururken,
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) bir katılım (örneğin, residentKey:
preferred veya residentKey: required ile) gerektirir.

Davranışın yanı sıra, sunucu tarafında saklanan verilere dayanarak, saklanan bir kimlik
bilgisinin resident key mi yoksa non-resident key mi olduğunu %100 kesinlikle
söyleyememeniz daha da kötüdür. Bunun yerine, bazı kontrolleri takip edebilir ve
daraltabilirsiniz (aşağıya bakın), ancak yine de kimlik bilgisinin davranışının inancınıza
göre olmasını ummanız gerekir.

Bunun arkasındaki neden, kimlik bilgisinin türü (resident key veya non-resident key)
hakkındaki bilgilerin
[kimlik bilgisi özellikleri uzantısında](https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension)
(clientExtensionResults.credProps.rk, true veya false olan) saklanması için bir WebAuthn
önerisi olmasıdır. Ancak, bu bilginin RP'ye sağlanması garanti edilmez, çünkü tüm WebAuthn
uzantıları isteğe bağlıdır, örneğin [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) bunu göndermez
(bu yüzden resident key mi yoksa non-resident key mi olduğunu bilemezsiniz).

Araştırmamız sırasında, oluşturulan kimlik bilgileri hakkında daha fazla ayrıntı sağlayan
iki WebAuthn demo sayfasıyla farklı platformlarda ve doğrulayıcılarda (Windows 10,
[Windows 11](https://www.corbado.com/blog/passkeys-windows-11), [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android)
7, [Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) 13, iOS17, macOS Ventura, YubiKey)
davranışı test etmeye çalıştık: [https://webauthn.io](https://webauthn.io) ve
[https://webauthntest.identitystandards.io/](https://webauthntest.identitystandards.io/).
İkincisi, eski requireResidentKey özelliği (WebAuthn Seviye 1) ile çalışma ve hatta onu
residentKey özelliği (WebAuthn Seviye 2) ile birleştirme imkanı sunar. Ancak, sonuçlar
güvenilir değildi (örneğin, [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) için non-resident key
belirtti ama açıkça koşullu arayüz çalışıyordu).

[Bulduğumuz](https://github.com/duo-labs/webauthn.io/issues/68#issuecomment-1321086293) en
güvenilir kontrol şeması şudur:

1. "residentKey" özelliği için WebAuthn sunucu ayarlarınızın ne olduğunu kontrol edin
    1. Eğer "residentKey: required" ve bir kimlik bilgisi başarıyla oluşturulduysa -&gt;
       bu bir resident key'dir
    2. Eğer "residentKey: preferred" veya "residentKey: discouraged" ise, bir sonraki
       kontrole geçin
2. credProps.rk uzantısı destekleniyor mu ve sunucudaki kimlik bilgisinde saklanıyor mu?
    1. Eğer credProps.rk = true ise, kimlik bilgisi bir resident key'dir
    2. Eğer credProps.rk = false ise, kimlik bilgisi bir non-resident key'dir
    3. Eğer credProps boşsa, kimlik bilgisinin türü bilinmemektedir

gördüğünüz gibi, bu daraltmaya yardımcı olur, ancak yine de bilinmeyen seçeneği kalır ve
anahtar türünü %100 kesinlikle belirleyemezsiniz.

Bu aynı zamanda SUSE'den William Brown'ın
[harika makalesindeki](https://fy.blackhats.net.au/blog/2023-02-02-how-hype-will-turn-your-security-key-into-junk/)
bulgularıyla da uyumludur; bu makalede Güvenen Taraflar tarafından resident key'lerin
zorunlu kılınması durumunda güvenlik anahtarlarının (örneğin, YubiKey'ler) nasıl işe
yaramaz hale gelebileceğini özetlemektedir (tablosunu genişlettik):

![Farklı resident key seçenekleri ve platformlar / doğrulayıcılar için WebAuthn Resident key davranışı](https://www.corbado.com/website-assets/6517169ef6b267c5861a1331_resident_key_table_operating_system_cc647fbf5b.png)

Tabloda, farklı WebAuthn sunucu resident key seçenekleri için bir resident key oluşturulup
oluşturulmadığını (true), bir non-resident key oluşturulup oluşturulmadığını (false) veya
başka bir şey olup olmadığını görüyorsunuz.

**Çözüm:**

- **Kapsamlı Test:** Dağıtımdan önce, WebAuthn uygulamanızı popüler doğrulayıcıların bir
  yelpazesinde test ederek davranışlarını anlayın.
- **Açık Sunucu Ayarları:** WebAuthn sunucunuzu kurarken gereksinimlerinizde açık olun.
  Yalnızca passkey'leriniz olmasını istiyorsanız, residentKey seçeneğini required olarak
  ayarlayın (not: bu, sınırlı resident key kapasitesine sahip doğrulayıcılarla başka
  zorluklara yol açabilir, yukarıya bakın).

### 8.3 Zorluk 3: Kullanıcı Deneyimi Endişeleri

Bir kullanıcı güvenlik anahtarındaki (örneğin, YubiKey) depolama sınırına ulaşırsa,
hatalarla karşılaşabilir veya yeni kimlik bilgileri kaydedemeyebilir. Bu, kafa
karışıklığına ve hayal kırıklığına yol açabilir.

**Çözüm:**

- **Zarif Hata İşleme:** Kullanıcıya güvenlik anahtarının (örneğin, YubiKey) dolduğunu
  bildiren ve sorunu nasıl çözecekleri konusunda rehberlik sağlayan açık hata mesajları
  uygulayın.
- **Rehberli İş Akışları:** Kullanıcıların resident key'lerini nasıl yönetebilecekleri
  konusunda adım adım kılavuzlar veya eğitimler sunarak, sorunları bağımsız olarak
  çözebilmelerini sağlayın.

<h2 id="best-practices-developers-product-managers">
    9. Geliştiriciler ve Ürün Yöneticileri için En İyi Uygulamalar
</h2>

Yukarıda gördüğünüz gibi, seçtiğiniz WebAuthn sunucu ayarları, kimlik doğrulama
sürecinizin kullanıcı deneyimini ve güvenliğini önemli ölçüde etkileyebilir. Bilinçli
kararlar vermek için bu ayarların inceliklerini anlamak esastır.

**Resident ve Non-resident Key'ler:** Kullanıcılarınızın çoğunluğu hizmetinize öncelikle
akıllı telefonlar veya dizüstü bilgisayarlar gibi kişisel cihazlardan erişiyorsa, resident
key'ler uygun bir seçimdir. Resident key'ler cihazın kendisinde saklanır ve aynı cihazı
sık kullanan kullanıcılar için sorunsuz bir kimlik doğrulama deneyimi sunar. Ancak,
non-resident key olan güvenlik anahtarları (örneğin, YubiKey'ler) kullanan kullanıcılar
için bu daha uygun olabilir.

**Kullanıcı Doğrulama (UV) Ayarları:** Ulaşmak istediğiniz güvenlik düzeyine bağlı olarak,
kullanıcı doğrulama sürecinin ne kadar sıkı olacağına karar verebilirsiniz. Yüksek
güvenlik hedefliyorsanız, bir PIN, parmak izi veya yüz tanıma gerektirmek
(userVerification: preferred veya [userVerification](https://www.corbado.com/glossary/user-verification):
required) tavsiye edilir.

**Attestation ve Güvenilirlik:** Attestation, doğrulayıcının kökenini ve bütünlüğünü
doğrulamanıza olanak tanır. Tüm doğrulayıcılara mı yoksa yalnızca belirli üreticilerden
gelenlere mi güveneceğinize karar verin. Bu, hassas verilerle uğraşıyorsanız ve yalnızca
yüksek kaliteli, güvenilir doğrulayıcıların kullanılmasını sağlamak istiyorsanız çok
önemli olabilir.

**Yedek Mekanizmalar:** Her zaman bir yedek mekanizma bulundurun. Bir kullanıcı
doğrulayıcısını kaybederse veya arızalanırsa, hesabına erişmek için alternatif bir yolları
olmalıdır. Bu, yedek kodlar, SMS doğrulaması, e-posta sihirli bağlantıları veya diğer çok
faktörlü kimlik doğrulama yöntemleri aracılığıyla olabilir.

**Sürekli Eğitim:** Passkey'ler ve WebAuthn dünyası sürekli gelişmektedir. En son
gelişmeler, güvenlik açıkları ve yamalarla güncel kalın. Geliştirme ekibinizi passkey'ler
ve WebAuthn ile ilgili atölye çalışmalarına, webinarlara ve konferanslara katılmaya teşvik
edin.

**Kullanıcı Kaydı ve Eğitimi:** Passkey ile kimlik doğrulamayı tanıtırken,
kullanıcılarınızın faydalarını ve nasıl çalıştığını anladığından emin olun. Kayıt işlemi
sırasında net talimatlar sunun ve kullanıcıların passkey'leri kurmasına ve kullanmasına
yardımcı olacak kaynaklar (SSS'ler veya video eğitimleri gibi) sağlayın.

Bu en iyi uygulamalara bağlı kalarak, geliştiriciler ve ürün yöneticileri, hem güvenliği
hem de kullanıcı deneyimini dengeleyerek passkey ile kimlik doğrulamayı etkili bir şekilde
uygulayabilirler.

## 10. Öneri

Web sitenizde veya uygulamanızda genel kullanıma yönelik passkey'leri uygulamak
istiyorsanız ve güvenlik anahtarlarını (örneğin, YubiKey'ler) desteklemeniz gerekmiyorsa,
çünkü kullanıcılarınızın çoğu sadece akıllı telefonlarını veya dizüstü bilgisayarlarını
kullanacaksa, aşağıdaki ayarları öneririz.

- [authenticator](https://www.corbado.com/glossary/authenticator): platform
- residentKey: required
- [userVerification](https://www.corbado.com/glossary/user-verification): required

**Faydaları:**

- Oluşturulan tüm anahtarlar resident key olduğundan, kurulum Koşullu Arayüz için olanak
  tanır ve kullanıcılarınızın bir kullanıcı adı hatırlamak zorunda kalmamasıyla giriş
  işlemini daha da sorunsuz hale getirir.
- Apple, Google ve Microsoft'un tüm modern cihazları desteklenir ve passkey kullanır.

## 11. Sonuç

WebAuthn'ın sunucu ayarları karmaşık olmakla birlikte, kimlik doğrulama için sağlam ve
esnek bir çerçeve sunar. Bu ayarlarda uzmanlaşmak çok önemlidir, çünkü bu sadece yeni bir
standart uygulamakla ilgili değil; kullanıcı kimlik doğrulamasının güvenliğini ve
verimliliğini temelden iyileştirmekle ilgilidir.

Özünde, WebAuthn'ın sunucu ayarlarını anlamak, daha güvenli, verimli ve ileriye dönük
uygulamalar oluşturmaya yönelik bir yatırımdır. Dijital dünya geliştikçe, bu tür
teknolojilerde bilgili olmak vazgeçilmez olacaktır. Güncel kalmak için
[passkeys topluluğumuza](https://bit.ly/passkeys-community) katılın veya aşağıdaki
bültenimize abone olun.
