Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
18 yazı bulundu
Authentication ve Authorization'ın Haritası: Credential, Session, Token, Claim ve ASP.NET Core'un Authentication Handler Modeli
Güvenlik SERİ 01

Authentication ve Authorization'ın Haritası: Credential, Session, Token, Claim ve ASP.NET Core'un Authentication Handler Modeli

Authentication kim olduğunu, authorization ne yapabileceğini bulur; ASP.NET Core'da ilki isimli scheme'ler ve handler'larla HttpContext.User'ı doldurur, ikincisi policy'ye bakıp challenge (401) ya da forbid (403) çağırır. Credential, session, token ve claim kavramlarını adlandırıyor, policy scheme ile cookie ve JWT'yi birleştiriyor ve .NET 10'da Results.Ok dönen endpoint'in neden hâlâ 302 verdiğini gösteriyoruz.

8 Kas 2026 11 dk 5
ASP.NET Core Cookie Authentication Derinlemesine: Session Ömrü, Sliding Expiration, Server-Side Session ve Revocation
Güvenlik SERİ 02

ASP.NET Core Cookie Authentication Derinlemesine: Session Ömrü, Sliding Expiration, Server-Side Session ve Revocation

Sliding expiration tek başına bir session'ı sonsuza kadar yaşatabilir; absolute timeout'u OnValidatePrincipal ile kendin eklemen, iptal için de sunucuda bir durum (ITicketStore ya da versiyon damgası) tutman gerekir. Cookie ticket'ının içini, 14 günlük varsayılanı, yarı pencerede yenilemeyi, chunking'i, Redis'te server-side session'ı ve tüm cihazlardan çıkışı gerçek çıktılarla gösteriyoruz.

8 Kas 2026 11 dk 3
ASP.NET Core Identity'nin Mimarisi: UserManager, SignInManager, Store'lar ve Özelleştirme
Güvenlik SERİ 03

ASP.NET Core Identity'nin Mimarisi: UserManager, SignInManager, Store'lar ve Özelleştirme

ASP.NET Core Identity tek parça bir giriş sistemi değil; UserManager kullanıcı kurallarını, SignInManager HTTP oturumunu, store interface'leri de veri erişimini ayrı katmanlarda yürütür. Guid key'li kendi user entity'mizi ve tablo isimlerimizi kuruyor, schema version'ları, dört kayıt yöntemini ve MapIdentityApi'nin JWT olmayan token'ını ve tekrar kullanılabilen refresh token'ını gerçek çıktılarla inceliyoruz.

8 Kas 2026 10 dk 3
ASP.NET Core Identity ile Hesap Yaşam Döngüsü: Kayıt, E-posta Onayı, Parola Sıfırlama, External Login ve Hesap Silme
Güvenlik SERİ 04

ASP.NET Core Identity ile Hesap Yaşam Döngüsü: Kayıt, E-posta Onayı, Parola Sıfırlama, External Login ve Hesap Silme

Identity'nin sıfırlama token'ı tek kullanımlık olarak işaretlenmez; içinde security stamp taşıdığı için parola değişince ölür, varsayılan ömrü de bir gündür. Kayıt, e-posta onayı, ayrı ömürlü parola sıfırlama provider'ı, diğer session'ları düşürme, e-posta değişikliği, Google ile external login'de otomatik bağlamanın riski ve KVKK/GDPR için kişisel veri export'u ile hesap silmeyi Angular ekranıyla kuruyoruz.

8 Kas 2026 12 dk 3
MFA: TOTP, Recovery Code'lar, Step-up Authentication ve SMS'in Zayıflığı
Güvenlik SERİ 05

MFA: TOTP, Recovery Code'lar, Step-up Authentication ve SMS'in Zayıflığı

ASP.NET Core Identity'nin varsayılan authenticator provider'ı bir TOTP kodunu ±2 zaman adımı (beş kod) içinde ve tekrar tekrar kabul ediyor; NIST ise kodun bir kez kabul edilmesini istiyor. TOTP'yi RFC 6238 test vektörüyle kendimiz hesaplıyor, kurulum, lockout, replay korumalı provider, recovery code'lar, amr claim'iyle step-up policy'si ve SMS ile 'bu cihazı hatırla'nın riskini gerçek çıktılarla gösteriyoruz.

8 Kas 2026 12 dk 1
Passkey'ler 1: WebAuthn ve FIDO2 Nasıl Çalışır? RP ID, Challenge, Attestation ve Assertion
Güvenlik SERİ 06

Passkey'ler 1: WebAuthn ve FIDO2 Nasıl Çalışır? RP ID, Challenge, Attestation ve Assertion

Passkey phishing'e dayanıklıdır çünkü tarayıcı credential'ı yalnız kayıtlı RP ID'nin origin'lerinde kullanır ve imza, origin ile challenge'ı taşıyan clientDataJSON'u kapsar. Bookstore lab'ında yakaladığımız gerçek attestation ve assertion verisini CBOR ile çözüyor, imzayı elle doğruluyor, UV, BE ve BS bayraklarını, synced ve device-bound passkey farkını ve hesap kurtarma tasarımını anlatıyoruz.

8 Kas 2026 9 dk 3
Passkey'ler 2: ASP.NET Core Identity 10 ile Passkey Kaydı ve Passwordless Giriş, Angular İstemciyle
Güvenlik SERİ 07

Passkey'ler 2: ASP.NET Core Identity 10 ile Passkey Kaydı ve Passwordless Giriş, Angular İstemciyle

ASP.NET Core Identity 10, SignInManager'ın MakePasskeyCreationOptionsAsync, PerformPasskeyAttestationAsync ve PasskeySignInAsync method'larıyla passkey kaydını ve passwordless girişi hazır getiriyor; ama ServerDomain boşsa RP ID Host header'ından gelir ve passkey girişi amr olarak pwd yazar. Angular istemciyi, conditional UI'ı ve headless Chrome'un sanal authenticator'ıyla uçtan uca testi kuruyoruz.

8 Kas 2026 10 dk 3
JWT Derinlemesine: JWS ve JWE, Algoritma Seçimi, kid, JWKS ve Signing Key Rotation
Güvenlik SERİ 08

JWT Derinlemesine: JWS ve JWE, Algoritma Seçimi, kid, JWKS ve Signing Key Rotation

Kesintisiz signing key rotation üç adımdır: yeni key'i JWKS'te yayınla, API'lerin cache'i yenilenene kadar bekle (varsayılan 12 saat), sonra onunla imzala ve eski key'i token ömrü dolunca kaldır. JWS ve JWE farkını, ES256 seçimini, alg none ve algorithm confusion denemelerini, at+jwt ile typ doğrulamayı, kid ve JWKS'i, 8725bis taslağının uyarılarını ve claim şişmesini gerçek çıktılarla gösteriyoruz.

8 Kas 2026 11 dk 4
Refresh Token'lar: Rotation, Reuse Detection, Revocation ve Sunucu Tarafında Güvenli Saklama
Güvenlik SERİ 09

Refresh Token'lar: Rotation, Reuse Detection, Revocation ve Sunucu Tarafında Güvenli Saklama

Refresh token her kullanımda yenilenmeli ve tüketilmiş bir token tekrar gelirse o girişin bütün token family'si iptal edilmeli; RFC 9700 public client'lar için bunu ya da sender-constrained token'ı zorunlu tutuyor. EF Core ve SQLite ile SHA-256 hash'li saklamayı, ExecuteUpdate ile atomik tüketimi, reuse detection'ı, iki sekme yarışını, sliding ve absolute ömrü ve tüm cihazlardan çıkışı gerçek çıktılarla kuruyoruz.

8 Kas 2026 10 dk 3
OAuth 2.0'ın Mantığı: Roller, Grant Type'lar, Scope'lar ve RFC 9700 ile OAuth 2.1'in Getirdikleri
Güvenlik SERİ 10

OAuth 2.0'ın Mantığı: Roller, Grant Type'lar, Scope'lar ve RFC 9700 ile OAuth 2.1'in Getirdikleri

OAuth 2.0 bir giriş protokolü değil, yetki devri protokolüdür. Dört rolü ve front/back channel ayrımını, confidential ve public client farkını, authorization code, client credentials ve device grant'i Keycloak lab'ında .NET 10 koduyla çalıştırıyor; implicit ve password grant'in neden kaldırıldığını, RFC 9700'ün ve OAuth 2.1 draft'ının getirdiklerini ve access token'ın neden giriş kanıtı olmadığını gösteriyoruz.

8 Kas 2026 11 dk 2
Authorization Code Flow + PKCE Adım Adım: state, nonce, PAR ve Keycloak ile HTTP Trafiğini Okumak
Güvenlik SERİ 11

Authorization Code Flow + PKCE Adım Adım: state, nonce, PAR ve Keycloak ile HTTP Trafiğini Okumak

PKCE, front channel'dan geçen code'u onu isteyen client'a bağlar; çalınan code verifier olmadan işe yaramaz. Keycloak lab'ında akışı curl'le adım adım okuyor, state ve nonce'un neyi engellediğini, yanlış verifier'dan sonra code'un yandığını ve redirect URI'nin neden birebir eşleşmesi gerektiğini gösteriyor; sonra PAR ile parametreleri back channel'a taşıyıp ASP.NET Core'un OIDC handler'ını uçtan uca izliyoruz.

8 Kas 2026 11 dk 2
OpenID Connect: ID Token, UserInfo, Discovery, ASP.NET Core'da AddOpenIdConnect ve Logout Türleri
Güvenlik SERİ 12

OpenID Connect: ID Token, UserInfo, Discovery, ASP.NET Core'da AddOpenIdConnect ve Logout Türleri

ID token client için yazılmış bir giriş kaydıdır, access token ise API için bir yetki belgesi; ikisini karıştırmak güvenlik açığıdır. Keycloak lab'ında discovery, JWKS ve UserInfo'yu okuyor, AddOpenIdConnect'te MapInboundClaims'in claim isimlerini nasıl değiştirdiğini gösteriyor, RP-initiated logout'u izliyor ve back-channel logout endpoint'ini yazıp başka bir uygulamadan çıkışın bu uygulamadaki cookie'yi de düşürdüğünü doğruluyoruz.

8 Kas 2026 12 dk 3
Blog Haritası