Rehberler

Kimlik Doğrulama Nedir? Girişler, Oturumlar ve OAuth Açıklamalı

Kimlik doğrulama, bir uygulamanın kullanıcının kim olduğunu doğruladığı süreçtir — genellikle bildiği bir şeyi (parola), sahip olduğu bir şeyi (telefonuna ya da e-postasına gönderilen bir kod) ya da güvenilen başka bir hizmetteki kimliğini ("Google ile giriş yap" gibi) kontrol ederek. Kullanıcı doğrulandıktan sonra uygulama onu bir oturum ya da token ile hatırlar; böylece her sayfada yeniden giriş yapması gerekmez. Doğrulanmış bu kullanıcının neler yapabileceğine karar vermek ise yetkilendirme adı verilen ayrı bir adımdır.

AI ile geliştirirken neden önemli?

Giriş eklemek, insanların bir AI oluşturucudan en sık istediği şeylerden biridir ve yanlış yapılması en kolay olanlardan biridir. Bir giriş sayfasını üretmek basittir. Zor olan, etrafındaki her şeydir:

  • Parolalar güvenli biçimde saklanıyor mu?
  • Her özel sayfa ve her API uç noktası gerçekten kimin istediğini kontrol ediyor mu?
  • Giriş yapmış bir müşteri, URL'deki bir sayıyı değiştirerek başka bir müşterinin verisini görebiliyor mu?
  • Biri parolasını unuttuğunda ne olur?

Bir uygulama, bunların hepsinde başarısız olurken yine de tamamen güvenli görünebilir. Hareketli parçaları anlamak, doğru soruları sormanızı ve doğru şeyleri test etmenizi sağlar.

Günlük hayattan bir benzetme

Bir otele giriş yapmayı düşünün.

Resepsiyonda kimliğinizi gösterirsiniz. Bu kimlik doğrulamadır: kim olduğunuzu kanıtlamak. Resepsiyonist size bir kart anahtar verir. Bu kart sizin oturumunuzdur: konaklamanız boyunca tekrar kimlik göstermezsiniz, kartı okutursunuz.

Kart odanızı, spor salonunu ve katınıza giden asansörü açar — ama diğer misafirlerin odalarını ya da personel ofisini açmaz. Bu da yetkilendirmedir: kimliğinizin neye erişebileceği. Kartınızı kaybederseniz otel onu resepsiyonda devre dışı bırakabilir (oturumu iptal etmek). Çıkış yaptığınızda kart çalışmaz hale gelir (çıkış yapmak ya da sürenin dolması).

"Google ile giriş yap" ise otelin kimliğinizi kendisinin kontrol etmek yerine, güvendiği bir partnerden "bu kişi budur" diyen bir mektubu kabul etmesine benzer.

Başlıca giriş yöntemleri

YöntemNasıl çalışırArtılarıEksileri
E-posta + parolaKullanıcı bir parola seçer; uygulama bunun özetini saklarTanıdık, dışarıya bağımlılık yokÖzetleri güvenli saklamanız ve sıfırlamaları yönetmeniz gerekir
Sihirli bağlantı / tek seferlik kodUygulama, kullanıcıyı giriş yaptıran bir bağlantı ya da kodu e-postayla gönderirSızacak ya da unutulacak parola yokE-posta iletimine bağlı; girişi daha yavaş
Sosyal giriş (OAuth / OpenID Connect)Kullanıcı Google, Apple, GitHub vb. ile giriş yaparKullanıcılar için hızlı; sizin parola saklamanız yokHer sağlayıcıyla ayrı kurulum; o hesapları olmayan kullanıcılar
Barındırılan kimlik sağlayıcıClerk, Auth0 ya da Supabase Auth gibi bir hizmet kayıt, giriş ve sıfırlamayı yönetirSizin için daha az güvenlik işiÖlçekte aylık ücret; bir bağımlılık daha
Çok faktörlü (MFA / 2FA)İlk kontrolden sonra ikinci bir doğrulama, örneğin kimlik doğrulayıcı uygulamadan bir kodEle geçirilmesi çok daha zorBiraz daha fazla sürtünme

Parolalar nasıl saklanmalı?

Güvenli bir uygulama gerçek parolanızı asla saklamaz. Bunun yerine bir özet (hash) saklar: parolayı sabit uzunlukta bir dizgeye çeviren tek yönlü bir fonksiyonun çıktısı. Giriş yaptığınızda uygulama yazdığınızı özetler ve sonucu saklanan özetle karşılaştırır.

Bunu güvenli kılan iki ayrıntı vardır:

  • Tuz (salt) — her parolaya özetlemeden önce eklenen rastgele bir değer; böylece aynı parolayı kullanan iki kişi farklı özetler elde eder ve önceden hesaplanmış arama tabloları işe yaramaz.
  • Parolalar için tasarlanmış yavaş bir algoritma — Argon2, bcrypt ya da scrypt gibi. MD5 ya da SHA-256 gibi genel amaçlı özetler tek başına çok hızlıdır; saldırganlar milyarlarca tahminde bulunabilir.

Özetleme şifrelemeyle aynı şey değildir. Şifrelenmiş veri bir anahtarla çözülebilir; parola özeti ise hiç geri döndürülemeyecek şekilde tasarlanmıştır.

Oturumlar ve token'lar

Girişten sonra uygulamanın her istekte sizi tanıması gerekir. Bunun iki yaygın yolu vardır.

Oturum (çerez)Token (ör. JWT)
Tarayıcının tuttuğuBir çerezde rastgele bir oturum kimliğiKullanıcı bilgisi ve son kullanma tarihi içeren imzalı bir token
Giriş durumunun yeriSunucuda, bir veritabanında ya da depodaToken'ın kendi içinde
Birini her yerden çıkış yaptırmakKolay: sunucuda oturumu silinDaha zor: süresi dolana kadar, bir engelleme listesi tutmazsanız geçerli kalır
Tipik kullanımGeleneksel web uygulamalarıAPI'ler, mobil uygulamalar, birbirleriyle konuşan servisler

Çerezler için üç ayar önemlidir: HttpOnly (sayfadaki JavaScript çerezi okuyamaz), Secure (yalnızca HTTPS üzerinden gönderilir) ve SameSite (diğer sitelerden gelen isteklerde gönderimi sınırlar). Token'ları tarayıcının localStorage alanında saklamak yaygındır, ancak bu, sayfada çalışan her script'e token'ları açığa çıkarır.

OAuth ve "Google ile giriş yap"

OAuth 2.0, devredilmiş yetkilendirme için bir standarttır: bir uygulamanın, parolanızı hiç görmeden başka bir hizmetteki hesabınıza sınırlı erişim almasına izin verir — örneğin Google Takviminizi okumak. Google'a yönlendirilirsiniz, belirli izinleri (scope adı verilen) onaylarsınız ve Google uygulamaya yalnızca bu izinlerle sınırlı bir token verir.

OAuth tek başına erişim vermek için tasarlandı; kimliğinizi bildirmek için değil. OpenID Connect (OIDC), OAuth 2.0'ın üzerine kimlik ekleyen bir katmandır ve "Google ile giriş yap" ya da "Apple ile giriş yap" bunu kullanır. Kurulum için uygulamanızı sağlayıcıya kaydedersiniz ve bir istemci kimliği (client ID) ile bir istemci gizli anahtarı (client secret) alırsınız; gizli anahtar sunucunuzda kalmalıdır.

Çalışan bir örnek: bir müşteri portalı için giriş

Bir tasarım ajansının müşterilerinin projelerini ve faturalarını görebileceği bir portal geliştirdiğinizi düşünün.

  • Kimlik doğrulama: Müşteriler e-posta ve sihirli bağlantıyla giriş yapar, bu yüzden yönetilecek parola yoktur. Ajans personeli Google Workspace hesaplarıyla giriş yapar.
  • Roller: Her kullanıcının bir rolü vardır — client ya da staff.
  • Yetkilendirme kuralları:
İşlemMüşteriPersonel
Kendi şirketinin projelerini görmekEvetEvet
Diğer şirketlerin projelerini görmekHayırEvet
Bir projeye dosya yüklemekYalnızca kendi projeleriEvet
Bir faturayı ödendi olarak işaretlemekHayırEvet
  • Nerede uygulanır: Her istekte sunucuda. Sunucu giriş yapan kullanıcıyı bulur, ardından yalnızca project.company_id değeri kullanıcının şirketiyle eşleşen projeleri döndürür. "Ödendi" düğmesini gizlemek yetmez — uç noktanın kendisi reddetmelidir.

Sık kullanılan terimler

TerimAnlamı
Kimlik doğrulama (AuthN)Kimin olduğunu doğrulamak.
Yetkilendirme (AuthZ)Neler yapabileceğine karar vermek.
Oturum (session)Uygulamanın isteklerin arasında giriş yaptığınızı hatırlaması.
Çerez (cookie)Tarayıcının her istekte siteye geri gönderdiği küçük bir veri parçası.
JWTJSON Web Token: kullanıcı kimliği ve son kullanma tarihi gibi iddiaları taşıyan, imzalı ve kompakt bir token.
Rol / izinErişimi belirleyen admin ya da member gibi etiketler.
MFA / 2FAKimlik doğrulayıcı uygulamadan bir kod gibi ikinci bir kanıt istemek.
SSOTek oturum açma: birçok uygulama için tek bir giriş (çoğu zaman bir şirket hesabı).
401 ve 403"Sen kimsin?" (kimlik doğrulanmamış) ile "Bunu yapamazsın" (yetkisiz).

Yaygın hatalar ve yanlış anlamalar

  • İzinleri yalnızca sayfada kontrol etmek. Tarayıcı bir düğmeyi gizlerken API kontrol etmiyorsa, herkes API'yi doğrudan çağırabilir.
  • URL'deki kimliklere güvenmek. /invoices/1042 adresi, giriş yapmış kullanıcıya ait olup olmadığını kontrol etmelidir.
  • Kendi kriptonuzu yazmak. Bilinen kütüphaneleri ya da sağlayıcıları kullanın; AI'ın kendi özetleme yöntemini icat etmesine izin vermeyin.
  • Zayıf parola sıfırlama. Sıfırlama bağlantıları tek kullanımlık olmalı, hızla süresi dolmalı ve bir e-postanın hesabı olup olmadığını açığa vurmamalıdır.
  • Kendi girişinizi, kullandığınız oluşturucununkiyle karıştırmak. Uygulamanızın kullanıcıları, geliştirdiğiniz aracı kullanırken sahip olduğunuz hesaptan ayrıdır.
  • Girişte hız sınırlaması olmaması. Bu olmadan saldırganlar sınırsız parola deneyebilir.

AI oluşturucunuzdan ne istemelisiniz?

  • "[iyi bilinen bir kütüphane ya da sağlayıcı] kullanarak kayıt ve giriş ekle. Kendi parola özetleme kodunu yazma."
  • "Parolaları bcrypt ya da Argon2 ile özetlenmiş olarak sakla."
  • "Oturum için HttpOnly, Secure çerezler kullan."
  • "Roller ekle: admin ve member. Her uç noktayı ve hangi rollerin çağırabileceğini listele."
  • "Kullanıcıların yalnızca kendi kayıtlarını okuyabildiğini ve düzenleyebildiğini sunucuda zorla. Sonra bunu nasıl kontrol ettiğini göster."
  • "Tek kullanımlık ve bir saat içinde süresi dolan bağlantılarla parola sıfırlama ekle."
  • "Giriş denemelerine hız sınırı koy."

Sonra kendiniz test edin: iki hesap oluşturun ve birinin verisine, diğer hesapla giriş yapmışken erişmeyi deneyin. Girişi ekleme rehberimiz ve güvenlik kontrol listemiz konuyu daha ileriye taşır.

Mythex'te kimlik doğrulama

Mythex, uygulamanızın kullanıcıları için yerleşik bir kimlik doğrulama ürünü sunmaz; bir yaklaşım seçersiniz — proje veritabanınızda saklanan e-posta ve parola ya da barındırılan bir sağlayıcının SDK'sı — ve agent'tan eklemesini istersiniz. Sağlayıcı anahtarları sohbete değil, proje sırlarına girer. Bu, Mythex'e kendi girişinizle ilgili ayrı bir konudur. Dokümantasyondaki uygulamanıza giriş ekleme tarifinde uyarlayabileceğiniz bir başlangıç istemi bulunur; sunucu tarafı kontrollerin nerede olduğunu ise API nedir yazısı açıklar.

Sorular

Kimlik doğrulama ile yetkilendirme arasındaki fark nedir?

Kimlik doğrulama, kim olduğunuzu kontrol eder; örneğin parolanızı doğrulayarak. Yetkilendirme ise sizi tanıdıktan sonra neler yapabileceğinize karar verir; örneğin yönetici sayfasını görüp göremeyeceğiniz ya da başkasının rezervasyonunu düzenleyip düzenleyemeyeceğiniz. Uygulamaların ikisine de ihtiyacı vardır.

OAuth nedir?

OAuth 2.0, bir uygulamanın parolanızı görmeden başka bir hizmetteki hesabınıza sınırlı erişim almasına izin veren bir standarttır. 'Google ile giriş yap' ise OAuth 2.0'ın üzerine inşa edilmiş bir kimlik katmanı olan OpenID Connect'i kullanır; böylece uygulama sizin kim olduğunuzu Google'dan öğrenir.

Uygulamam parolaları saklamalı mı?

Okunabilir biçimde asla. E-posta ve parola ile giriş kullanıyorsanız parolalar, Argon2 ya da bcrypt gibi parolalar için tasarlanmış yavaş bir algoritmayla üretilmiş, tuzlanmış özetler (hash) olarak saklanmalıdır. Birçok uygulama, barındırılan bir kimlik doğrulama sağlayıcısı, sosyal giriş ya da e-posta bağlantıları kullanarak bu sorunu baştan atlar.

Uygulamam oturum mu token mı kullanmalı?

İkisi de çalışır. Oturum, giriş durumunu sunucuda saklar ve tarayıcıya bir çerezde rastgele bir kimlik verir; bu da iptal etmeyi kolaylaştırır. JWT gibi bir token ise imzalanmış bilgiyi kendi içinde taşır; API'ler ve mobil istemciler için uygundur, ancak süresi dolmadan iptal etmek daha zordur. Tipik bir web uygulaması için çerez tabanlı oturumlar sağlam bir varsayılandır.

Mythex · Pricing · Yapay zekayla her şeyi yapın · Web sitesi ve uygulama şablonları · Mythex karşılaştırmaları · Yapay zekayla uygulama geliştirme sözlüğü · Yapay zekayla uygulama geliştirme için ücretsiz araçlar · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)