WEB / WEB-14.01
Identity, credential ve password authentication
Identity bir subject’i tanımlar; credential o iddiayı destekler. Password doğrulaması, session kurulması ve resource authorization birbirine bağlı ama ayrı kararlardır.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Authn + action izinli
- Account iddiası hazırlanır
Identifier ve credential input’u yalnız alias ile temsil edilir; raw secret yok.
- Browser / Duru
- Account claim; no verified subject
- Application
- No request
- Trusted records
- Verifier alias + account/resource policy
- Login input’u Application’a ulaştı
HTTPS request candidate input alias’ını taşır. Transport koruması supplied, TLS handshake simüle edilmez.
- Browser / Duru
- Waiting for decision
- Application
- Received identifier + candidate alias
- Trusted records
- Verifier alias + account/resource policy
- Local password verify sonucu
Established verify API’nin sonucu bu fixture’da supplied boolean’dır; gerçek crypto veya record fetch wire yok.
- Browser / Duru
- Waiting for decision
- Application
- Verified: subject-duru
- Trusted records
- Verifier unchanged; account allowed
- Action/resource policy
Verified subject bu action/resource ilişkisine izinli.
- Browser / Duru
- Waiting for decision
- Application
- ALLOW: read own note
- Trusted records
- Policy: no client-supplied authority
- Karar Browser’a ulaştı
credentialMatches ve accountAllowed bu örnekte true; subject-duru için read own note action’ı allowed’dur. Application’ın hazırladığı private representation şimdi Browser’a ulaştı. Bu sonuç başka bir action’a izin vermez.
- Browser / Duru
- Own note delivered
- Application
- Response: accepted
- Trusted records
- Verifier unchanged; policy applied
Credential mismatch
- Account iddiası hazırlanır
Identifier ve credential input’u yalnız alias ile temsil edilir; raw secret yok.
- Browser / Duru
- Account claim; no verified subject
- Application
- No request
- Trusted records
- Verifier alias + account/resource policy
- Login input’u Application’a ulaştı
HTTPS request candidate input alias’ını taşır. Transport koruması supplied, TLS handshake simüle edilmez.
- Browser / Duru
- Waiting for decision
- Application
- Received identifier + candidate alias
- Trusted records
- Verifier alias + account/resource policy
- Local password verify sonucu
Established verify API’nin sonucu bu fixture’da supplied boolean’dır; gerçek crypto veya record fetch wire yok.
- Browser / Duru
- Waiting for decision
- Application
- Credential mismatch; no subject
- Trusted records
- Verifier unchanged; account allowed
- Action/resource policy
Credential doğrulanmadı; subject kurulmaz.
- Browser / Duru
- Waiting for decision
- Application
- DENY: credential failure
- Trusted records
- Policy: no client-supplied authority
- Karar Browser’a ulaştı
Credential eşleşmediği için trusted subject kurulmadı; private representation hazırlanmadı. Browser’a generic ret sonucu ulaştı. İç karar credential failure’dır; bu, authenticated bir kullanıcının action izninin reddedilmesiyle aynı sonuç değildir.
- Browser / Duru
- No private representation
- Application
- Response: denied
- Trusted records
- Verifier unchanged; policy applied
Authn success, authz deny
- Account iddiası hazırlanır
Identifier ve credential input’u yalnız alias ile temsil edilir; raw secret yok.
- Browser / Duru
- Account claim; no verified subject
- Application
- No request
- Trusted records
- Verifier alias + account/resource policy
- Login input’u Application’a ulaştı
HTTPS request candidate input alias’ını taşır. Transport koruması supplied, TLS handshake simüle edilmez.
- Browser / Duru
- Waiting for decision
- Application
- Received identifier + candidate alias
- Trusted records
- Verifier alias + account/resource policy
- Local password verify sonucu
Established verify API’nin sonucu bu fixture’da supplied boolean’dır; gerçek crypto veya record fetch wire yok.
- Browser / Duru
- Waiting for decision
- Application
- Verified: subject-duru
- Trusted records
- Verifier unchanged; account allowed
- Action/resource policy
Subject doğrulandı; bu action için permission yok.
- Browser / Duru
- Waiting for decision
- Application
- DENY: action forbidden
- Trusted records
- Policy: no client-supplied authority
- Karar Browser’a ulaştı
subject-duru doğrulandı, fakat change Atlas administration settings action’ı için izin verilmedi. Private representation hazırlanmadı; Browser’a ret sonucu ulaştı. Authentication başarısı eksik administration permission’ını oluşturmaz.
- Browser / Duru
- No private representation
- Application
- Response: denied
- Trusted records
- Verifier unchanged; policy applied
ROLLER · STATE · VERİ AKIŞI
Identity bir bağlam içindeki subject’tir
Duru görünen ad, duru.reader login identifier, subject-duru ise Atlas uygulamasının iç subject referansı olabilir. Bunların görevleri aynı değildir. Görünen ad değişebilir veya başka bir kullanıcıyla aynı olabilir; trusted authorization referansı yalnız görünen metne bağlanmamalıdır.
Digital identity, belirli bir service içindeki subject temsilidir. Password ile bir hesabın kontrolünü kanıtlamak, o hesabın gerçek hayattaki kişinin kimliğine bağlanmasının bütün adımlarını yaptığı anlamına gelmez. Identity proofing ve günlük authentication farklı sorulardır.
Credential identifier’dan farklıdır
Login identifier “hangi hesabı iddia ediyorum?” sorusunu çözer. Credential ise bu iddiayı desteklemek için kullanılan password, security token veya başka authenticator bilgisiyle ilgilidir. Duru’nun subject ID’sini bilmek password’ünü bildiğini göstermez.
Credential bir authorization listesi olmak zorunda değildir. Password tek başına “kitap notunu düzenleyebilir” iznini taşımaz; önce doğrulanır, sonra trusted subject context’i ile policy değerlendirilir. API key ve bearer token gibi farklı credential taşıma biçimleri sonraki derste ayrı incelenir.
Authentication ve authorization iki farklı karar
Authentication, sunulan authenticator’ın ilgili identity iddiasını yeterince destekleyip desteklemediğini değerlendirir. Authorization, trusted actor’ın belirli resource üzerinde belirli action’ı mevcut context’te yapıp yapamayacağını belirler.
Fixture’da Duru doğru credential ile authenticate olabilir ama Atlas yönetim ayarlarını değiştirme izni olmayabilir. Bu durumda password yeniden doğrulamak eksik permission’ı üretmez. Tersi de mümkündür: public kitap kapağını görmek için authorization policy anonim erişime izin verebilir; her allow için login zorunlu değildir.
Bir UI action’ı gizlemek authorization kararı değildir. Trusted server, gateway veya serverless boundary erişim koşullarını her request için uygulamalıdır. Identity, tenant, action ve resource ilişkisini client’tan gelen role string’i yerine trusted kaynaktan çöz.
Password saklama: plaintext değil verifier
Kayıt anında uygulama password’ü geri okunacak plaintext olarak saklamak yerine password hashing/KDF desteğiyle verifier üretir. Password’e özel, güncel ve maliyeti ayarlanabilir bir algoritma gerekir; sıradan hızlı SHA-256 digest’i password storage için yeterli seçim değildir.
Unique random salt, aynı password’ün farklı hesaplarda aynı verifier’a dönüşmesini önlemeye ve önceden hazırlanmış karşılaştırmaları etkisizleştirmeye yardım eder. Salt secret değildir; verifier record’uyla tutulabilir. Pepper kullanılırsa salt’tan farklı olarak verifier database dışında korunan ek secret’tır; bu dersin fixture’ı pepper modellemez.
OWASP Password Storage rehberi Argon2id gibi güncel seçenekleri ve platforma göre alternatifleri belirtir. Cost parametreleri algorithm ve ortam kapasitesine bağlıdır; çalışma yükü üzerinde benchmark yapmadan evrensel bir sayı önermemek gerekir. Established library’nin salt ve encoded metadata yönetimini kullan; kendi KDF formatını uydurma.
Login: decrypt etmeden doğrulama
Login request’i identifier ve password input’unu güçlü transport korumasıyla application’a ulaştırır. HTTPS/TLS in-transit gizlilik ve integrity sağlar; server’ın password saklama politikasını kendiliğinden düzeltmez. Login form’u ve authenticated sayfalar için transport sınırı birlikte düşünülür.
Application credential record’u çözer ve library verify API’sini kullanır. Library kayıtlı salt, algorithm ve cost metadata ile candidate’ı kontrol eder; password hash’i “decrypt ederek” password elde etmez. Account status ve tamamlanması gereken ek factor/policy koşulları da login acceptance’ın parçası olabilir.
Bu fixture tek-factor password authentication’ı öğretir. credentialMatches supplied bir boolean’dır; gerçek KDF çalıştırıldığı iddia edilmez. Başarılı doğrulama trusted subject-duru context’ini kurar. Yeni authenticated session ayrı session lifecycle primitive’iyle oluşturulur; password raw input’u audit log’a yazılmaz.
Credential lifecycle, yalnız ilk login değildir
Password değişimi ve recovery hesabın gelecekteki kontrolünü değiştirir. Aktif session tek başına hassas credential değiştirme için yeterli assurance sayılmayabilir; mevcut authenticator veya uygun reauthentication koşulu uygulanır. Password değişti diye bütün mevcut session ve token’ların sihirli biçimde invalid olduğunu varsayma; revocation policy gerekir.
Verifier cost profile zamanla yükseltilebilir. Başarılı verify sonrası library’nin rehash-needed sonucuyla güncel profile geçmek bir yaklaşımdır. Eski verifier’ı “decrypt” ederek yeni profile taşıyamazsın; password doğrulama sırasında candidate mevcutken güvenli yeniden hashing yapılır.
Generic login failure metni, bilinmeyen hesabı yanlış password’den ayıran gereksiz ipuçlarını azaltır. Response biçimi, code ve işlem davranışı birlikte değerlendirilir. Login throttling ve MFA ayrı savunmalardır; bu model attempt timing, lockout threshold veya factor coverage ölçmez.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
Credential yanlış
- Credential kararı kapsamlandı
Bu branch credentialMatches ve accountAllowed alanlarıyla başlar. Verifier ve salt artifact’te alias’tır; bu sahne gerçek password veya KDF hesabı yapmaz.
- Credential check
- Predicate incelenmedi
- Subject binding
- Subject kurulmadı
- Resource policy
- Resource verilmedi
- Match ve account koşulu ayrıldı
credentialMatches=false ve accountAllowed=true olarak verilmiştir. Account policy, credential sonucuyla aynı alan değildir; ikisi gerektiğinde ayrı kontrol edilir.
- Credential check
- credentialMatches=false
- Subject binding
- Subject kurulmadı
- Resource policy
- Resource verilmedi
- Trusted subject sınırı uygulandı
Credential mismatch nedeniyle subject=null kalır. Login identifier duru.reader’ın bilinmesi veya UI’da Duru yazması authenticated subject üretmez.
- Credential check
- Match=false
- Subject binding
- subject=null
- Resource policy
- Resource verilmedi
- İstenen action ayrı değerlendirildi
Action read own note olarak seçilidir. Authenticated subject kurulamadığı için bu private note action’ı authorized=false kalır.
- Credential check
- Match=false
- Subject binding
- subject=null
- Resource policy
- authorized=false
- Resource teslimi durduruldu
resourceDelivered=false sonucu bu branch’in olumsuz sınırıdır. Authentication başarısı bütün sensitive action’lara grant vermez; credential failure’da ise identity bile kurulmaz.
- Credential check
- Match=false
- Subject binding
- subject=null
- Resource policy
- resourceDelivered=false
- Reddin anlamı korundu
Bu sonuç credential failure’dır; subject veya resource authority eklenmez. Salt ve cost profile alias’ları bu policy sonucuna gerçek cryptographic doğrulama kanıtı katmaz.
- Credential check
- Authn rejected
- Subject binding
- Trusted subject yok
- Resource policy
- Authz deny; delivery yok
Action yasak
- Credential kararı kapsamlandı
Bu branch credentialMatches ve accountAllowed alanlarıyla başlar. Verifier ve salt artifact’te alias’tır; bu sahne gerçek password veya KDF hesabı yapmaz.
- Credential check
- Predicate incelenmedi
- Subject binding
- Subject kurulmadı
- Resource policy
- Resource verilmedi
- Match ve account koşulu ayrıldı
credentialMatches=true ve accountAllowed=true olarak verilmiştir. Account policy, credential sonucuyla aynı alan değildir; ikisi gerektiğinde ayrı kontrol edilir.
- Credential check
- credentialMatches=true
- Subject binding
- Subject kurulmadı
- Resource policy
- Resource verilmedi
- Trusted subject sınırı uygulandı
Credential match başarılı olduğu için subject-duru bağlanır. Display name Duru ile trusted subject aynı tür alan değildir; UI metninden identity kurulmaz.
- Credential check
- Match=true
- Subject binding
- subject-duru
- Resource policy
- Resource verilmedi
- İstenen action ayrı değerlendirildi
Action change Atlas administration settings olarak seçilidir. Authenticated subject olsa da Atlas administration ayarı için authorized=false’tur.
- Credential check
- Match=true
- Subject binding
- subject-duru
- Resource policy
- authorized=false
- Resource teslimi durduruldu
resourceDelivered=false sonucu bu branch’in olumsuz sınırıdır. Authentication başarısı bütün sensitive action’lara grant vermez; credential failure’da ise identity bile kurulmaz.
- Credential check
- Match=true
- Subject binding
- subject-duru
- Resource policy
- resourceDelivered=false
- Reddin anlamı korundu
Bu sonuç authn success/authz deny’dır; login başarısız diye daraltmak hangi boundary’nin karar verdiğini gizler.
- Credential check
- Authn accepted
- Subject binding
- Trusted subject var
- Resource policy
- Authz deny; delivery yok
VARSAYIM · SINIR · KONTROL
Subject, credential ve permission’ı ayrı gözle
Defensive incelemede Duru adının UI’da görünmesini authenticated subject kanıtı sayma. Login acceptance, resolved subject ve resource decision ayrı evidence alanları olmalıdır. Credential failure’da subject kurulmadığını; authn success/authz deny durumunda subject kurulsa da resource verilmediğini izle.
Modelin credential mismatch branch’i supplied predicate false sonucunun decision’a etkisini gösterir. Başarılı predicate ise bütün sensitive action’ların otomatik izinli olduğu anlamına gelmez.
Verifier’ın koruduğu boundary’yi doğru yorumla
Salt ve slow hashing, verifier database disclosure riskini azaltır; weak password, credential reuse veya authenticated session disclosure gibi bütün riskleri çözmez. Salt’ı gizlemeyi password security’nin temel şartı gibi sunma.
Bir frontend secret veya browser-readable verifier kopyası, server tarafında tutulması gereken credential materyalini geniş bir trust boundary’ye yayabilir. Review’de kayıtların, backup’ların, recovery path’in ve logs’un gereksiz credential içermemesini kontrol et.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Tam decision
- Observation kapsamı seçildi
Bu branch normal satırın credential, subject, action ve delivery alanlarını birlikte inceler. Eksik alanlar başarılı sonuçlarla doldurulmaz.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Boundary eşleştirilmedi
- Integrity hükmü
- Delivery bilinmiyor
- Credential ve account sonucu okundu
credentialMatches=true ve accountAllowed=true olarak verilmiştir. Observation raw password, verifier veya salt byte’ları taşımaz; gereksiz credential kopyası gerekmez.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Match ve account allowed
- Integrity hükmü
- Delivery bilinmiyor
- Resolved subject ilişkilendirildi
subject=subject-duru kaydı identity sonucunu gösterir. DisplayName Duru ve loginIdentifier duru.reader ayrı roller taşır; metin eşitliği permission kanıtına dönüştürülmez.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Resolved subject: subject-duru
- Integrity hükmü
- Delivery bilinmiyor
- Action kanıtı ayrı arandı
Tam satır action=read own note ve authorized=true gösterir. Bu grant yalnız seçilen action’a aittir; administration yetkisine genişletilmez.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Authz: own note allowed
- Integrity hükmü
- Delivery bilinmiyor
- Delivery alanı karşılaştırıldı
resourceDelivered=true tam satırda kayıtlıdır. Bu alanla iki önceki gate arasında tutarlılık aranır; HTTP status veya gerçek browser görüntüsü eklenmez.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Authn+authz biliniyor
- Integrity hükmü
- Delivery=true
- Integrity hükmü kapsamlandı
Ana selector iki gate’den biri false iken delivered true satırı arar ve 0 verir. Bu complete satır uyumludur; gerçek password performansı veya timing güvenliği bundan ölçülmez.
- Decision observation
- normal decision: tam satır
- Boundary eşleştirme
- Decision uyumlu
- Integrity hükmü
- Matrix integrity uyumlu
Action kanıtı yok
- Observation kapsamı seçildi
Bu branch normal satırın yalnız credential ve subject alanlarını inceler. Eksik alanlar başarılı sonuçlarla doldurulmaz.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Boundary eşleştirilmedi
- Integrity hükmü
- Delivery bilinmiyor
- Credential ve account sonucu okundu
credentialMatches=true ve accountAllowed=true olarak verilmiştir. Observation raw password, verifier veya salt byte’ları taşımaz; gereksiz credential kopyası gerekmez.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Match ve account allowed
- Integrity hükmü
- Delivery bilinmiyor
- Resolved subject ilişkilendirildi
subject=subject-duru kaydı identity sonucunu gösterir. DisplayName Duru ve loginIdentifier duru.reader ayrı roller taşır; metin eşitliği permission kanıtına dönüştürülmez.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Resolved subject: subject-duru
- Integrity hükmü
- Delivery bilinmiyor
- Action kanıtı ayrı arandı
Bu prefix’te action authorization sonucu okunmaz. Authenticated subject’in bulunması object veya sensitive action sonucunu tamamlamaz.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Authz kanıtı eksik
- Integrity hükmü
- Delivery bilinmiyor
- Delivery alanı karşılaştırıldı
Delivery alanı bu kapsamın dışındadır. Resource verildi veya verilmedi diye kesin hüküm kurulmaz; ayrı delivery kaydı gerekir.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Yalnız authn biliniyor
- Integrity hükmü
- UNKNOWN: delivery
- Integrity hükmü kapsamlandı
Authn prefix’i ile bütün integrity predicate’i değerlendirilmez. Action ve delivery eksikliği bir leak kanıtı değildir; eksik kanıt olarak korunur.
- Decision observation
- normal decision: authn prefix incelemesi
- Boundary eşleştirme
- Action kanıtı gerekir
- Integrity hükmü
- UNKNOWN: resource outcome
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Verified subject sonrası resource policy uygula
Authentication component’in sonucu explicit subject ve assurance context olmalıdır. Downstream policy action/resource/tenant ilişkisini trusted verilerle değerlendirir; username veya displayName eşleşmesini permission yerine kullanmaz.
Public resource için anonymous allow gerekçesini, private resource için gerekli subject ve permission koşullarını ayrı tanımla. Bu iki ürün akışı aynı password zorunluluğuyla yönetilmek zorunda değildir.
Password handling’i library boundary’sinde tut
Established password-hash verify API, unique salt, recorded algorithm/cost metadata ve gerektiğinde rehash akışını kullan. Production parametrelerini güncel rehber ve workload ölçümüyle seç; bu dersin cost-profile alias’ını configuration olarak kopyalama.
Input handling, generic failure, throttling, MFA ve secure recovery password hash’in dışında kalan savunmalardır. Kendi timing veya KDF primitive’ini yazmak yerine framework/library davranışını ve hata sınırlarını doğrula.
Audit’te decision kalsın, credential kalmasın
Credential match sonucu, resolved subject alias’ı, account policy sonucu ve action decision’ı gözlem için yeterli olabilir. Raw password, verifier ve session secret yazmak gerekli değildir. Hash profile upgrade’i de credential içermeyen bir policy olayına bağlanabilir.
Sentetik matrix’te üç sonuç vardır: authn+authz başarı, credential failure ve authn başarı/authz deny. Bunları tek “login failed” satırına indirgemek sistemin hangi boundary’de karar verdiğini gizler; public response ve internal audit ayrımı ayrıca korunur.
ŞİMDİ VAKAYA UYGULA
Credential doğrulaması hangi action’ı otomatik izinli yapmaz?
Duru adı, credential sonucu, trusted subject ve resource policy farklı alanlardır. Olumsuz decision ve eksik observation birbirine karıştırılmaz.
Vakadaki doğrulanmış actor, tenant ilişkisi ve requested action için gereken kararları ayır. Authentication veya proof başarısını object permission yerine kullanma.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
Identity ve authentication decision matrix
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"identity": {
"displayName": "Duru",
"loginIdentifier": "duru.reader",
"trustedSubject": "subject-duru",
"tenant": "Atlas"
},
"credentialRecord": {
"verifier": "VERIFIER_ALIAS_ONLY_NOT_A_HASH",
"salt": "UNIQUE_SALT_ALIAS_NOT_RANDOM_BYTES",
"algorithmClass": "password-specific adaptive KDF",
"costProfile": "LIBRARY_PROFILE_ALIAS_NOT_PARAMETERS",
"plaintextStored": false
},
"cases": [
{
"case": "normal",
"credentialMatches": true,
"accountAllowed": true,
"subject": "subject-duru",
"action": "read own note",
"authorized": true,
"resourceDelivered": true
},
{
"case": "wrong-credential",
"credentialMatches": false,
"accountAllowed": true,
"subject": null,
"action": "read own note",
"authorized": false,
"resourceDelivered": false
},
{
"case": "authenticated-forbidden",
"credentialMatches": true,
"accountAllowed": true,
"subject": "subject-duru",
"action": "change Atlas administration settings",
"authorized": false,
"resourceDelivered": false
}
],
"selector": {
"xml": "<authentication><decision case=\"normal\" authenticated=\"true\" authorized=\"true\" delivered=\"true\"/><decision case=\"wrong-credential\" authenticated=\"false\" authorized=\"false\" delivered=\"false\"/><decision case=\"authenticated-forbidden\" authenticated=\"true\" authorized=\"false\" delivered=\"false\"/></authentication>",
"xpath": "count(/authentication/decision[@delivered=\"true\" and (@authenticated!=\"true\" or @authorized!=\"true\")])",
"expected": 0,
"positiveFixtureXml": "<authentication><decision authenticated=\"true\" authorized=\"false\" delivered=\"true\"/></authentication>",
"positiveExpected": 1
}
}- loginIdentifier / trustedSubject
- İddia edilen account ile successful verify sonrası kurulan trusted subject farklıdır.
- credentialRecord
- Salt/verifier/cost alanlarının anlamını gösteren alias record; gerçek hashing formatı değildir.
- credentialMatches / authorized
- Authentication predicate ile resource policy sonucunu ayrı tutar.
- resourceDelivered
- Yalnız gerekli authn ve authz koşulları geçince private representation verilir.
Single-factor conceptual fixture. credentialMatches ve accountAllowed supplied input’tur; password, KDF, MFA, timing veya gerçek login endpoint’i çalıştırılmadı. Alias record production configuration değildir.
İki yanlış kanı
Doğru password, identity’nin gerçek kişiye doğrulandığını ve her resource’a izin verildiğini kanıtlar.
Authentication account iddiasını destekler; identity proofing ve action/resource authorization ayrı süreçlerdir.
Password hash login’de decrypt edilir; salt gizli kaldığı için güvenlidir.
Verify API candidate’ı salt/algorithm/cost metadata ile kontrol eder; decrypt yapılmaz. Salt secret değildir, uygun password KDF ve credential lifecycle gerekir.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
Credential eşleşiyor, fakat action Atlas admin settings. Subject’in kurulması resource delivery için yeterli mi?
- Evet. Password verification bütün action’ları açar.
- Hayır. authenticated-forbidden sonucunda authorized=false.
Gerekçeli cevabı oku
Hayır. authenticated-forbidden sonucunda authorized=false. — Güvenilen subject kurulabilir, fakat bu subject’e administration action izni verilmemiştir.
Verifier ve salt alias’ları, gerçek password hash güvenliğinin ölçüldüğünü gösterir mi?
Dersten seçilen artifact alanları; öğretim örneği
- credentialRecord
- {"verifier":"VERIFIER_ALIAS_ONLY_NOT_A_HASH","salt":"UNIQUE_SALT_ALIAS_NOT_RANDOM_BYTES","algorithmClass":"password-specific adaptive KDF","costProfile":"LIBRARY_PROFILE_ALIAS_NOT_PARAMETERS","plaintextStored":false}
- Hayır. Gerçek hash, random byte ve parametreler burada yok.
- Evet. Salt alias, random generation ve cost calibration kanıtıdır.
Gerekçeli cevabı oku
Hayır. Gerçek hash, random byte ve parametreler burada yok. — Password-specific adaptive KDF’in rolü anlatılır; costProfile yalnız LIBRARY_PROFILE_ALIAS_NOT_PARAMETERS etiketidir.
loginIdentifier=duru.reader, displayName=Duru ve trustedSubject=subject-duru hangi ayrı işleri yapar?
Gerekçeli cevabı oku
displayName UI etiketidir. loginIdentifier credential lookup sırasında account’ı seçebilir. trustedSubject ise başarılı verification ve policy değerlendirmesi sonrasında kurulan principal’dır. Aynı display name iki kimliği birleştirmez. Verifier saklama modeli de geri okunabilen password plaintext’iyle eşitlenmez.
□ Display name, lookup identifier ve principal rollerini ayırdım.
□ Verifier’ı geri okunabilir password plaintext’i olarak anlatmadım.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- OWASP — Authentication Cheat SheetIntroduction · User IDs · Compare Password Hashes Using Safe Functions · Transmit Passwords Only Over TLS or Other Strong Transport · Authentication and Error Messages · Require Re-authentication for Sensitive Features · Login Throttling
- OWASP — Password Storage Cheat SheetHashing vs Encryption · Salting · Peppering · Using Work Factors · Upgrading the Work Factor · Password Hashing Algorithms: Argon2id
- OWASP — Authorization Cheat SheetIntroduction · Validate the Permissions on Every Request · Verify that Authorization Checks are Performed in the Right Location
- OWASP — Session Management Cheat SheetRenew the Session ID After Any Privilege Level Change · Logging Sessions Life Cycle