25 puan yazan GN⁺ 2024-05-28 | 8 yorum | WhatsApp'ta paylaş
  • "auth" terimi hem kimlik doğrulama (authentication) hem de yetkilendirme (authorization) anlamına gelir
  • Bu da kütüphane veya paket adlarında kafa karışıklığına yol açar
  • "authn" ve "authz" terimleri net değildir ve anlaşılması zordur

Kimlik doğrulama ve yetkilendirme arasındaki fark

  • Kimlik doğrulama (authentication): kullanıcının kim olduğunu doğrulama süreci
  • Yetkilendirme (authorization): kullanıcının ne yapabileceğini belirleme süreci
  • Bu iki kavram birbirinden farklıdır; birini çözmek diğer sorunu çözmez

"permissions" ve "login" kullanma önerisi

  • Kimlik doğrulamayı "login", yetkilendirmeyi ise "permissions" olarak açıkça ayırmayı önerir
  • "login" hem isim hem fiil olarak kullanılabilir
    • İsim: sisteme erişmek için girilen bilgiler
    • Fiil: sistemi kullanmak için giriş yapma eylemi
  • "permissions" isim olarak kullanılır; fiil biçimi yerine "check permissions" kullanılır

Açık terim kullanmanın avantajları

  • Yazılım mühendisliği dışındaki alanlardaki kişiler de bunu kolayca anlayabilir
  • Daha iyi soyutlamaları mümkün kılar
  • Kimlik doğrulama ile yetkilendirme ayrı modüller olarak tasarlanıp ayrıştırılabilir

GN⁺ görüşü

  • Açık terim kullanımının önemi: Terimler net olduğunda iletişim daha akıcı olur ve yanlış anlamalar azalır.
  • Soyutlamanın faydası: Kimlik doğrulama ile yetkilendirmeyi ayırmak, sistem tasarımını daha esnek hale getirir ve bakımını kolaylaştırır.
  • Diğer terim kullanım örnekleri: "login" ve "permissions" dışında "access control" gibi terimler de değerlendirilebilir.
  • Teknoloji benimsenirken dikkat edilmesi gerekenler: Yeni terimler benimsenirken ekip içinde yeterli tartışma ve uzlaşma gerekir.
  • İlgili proje önerileri: Kimlik doğrulama ile yetkilendirmeyi ayıran temsilî projeler arasında OAuth ve OpenID Connect bulunur.

8 yorum

 
savvykang 2024-05-29

Geliştiriciler kendi aralarında auth yerine authn, authz kullanırken, kullanıcıyla temas eden belge ya da controller/facade katmanlarında login ve permission kullanılması bence kabul edilebilir. Ancak authn ve authz terimlerini bile tamamen kaldıralım demekse buna gerçekten gerek var mı emin değilim.

 
gcback 2024-05-29

Metinde de işaret edildiği gibi, auth teriminin kimlik doğrulama ve yetkilendirme için iki anlamlı biçimde kullanılması gerçekten kafa karıştırıcıydı. Sadece geliştiriciler dışındaki alanlarla iletişim için de bunu daha genel terimlerle ayırmak, yerinde bir girişim gibi görünüyor.

 
nemorize 2024-05-28

Sorun, hem Authentication hem de Authorization’ın kısaltmasının Auth olabilmesiyse,
metinde de belirtildiği gibi Authn ve Authz yeterli olurdu bence...
Bunun yeterince açık olmadığı düşünülüyorsa, biraz daha açıp Authenty ve Authory demek de fena olmazdı.

 
koxel 2024-05-28

Yetki sisteminin bir de permission türü var, bir de ACL türü var; o zaman bunları nasıl ayırt edeceğiz..?
Biraz zorlama gibi duruyor...

 
namarie32ilu 2024-05-28

Muhtemelen geliştirici olmayan ekip üyeleriyle iletişim maliyetini azaltma girişimidir, ama biraz fazla kaçmış.

 
iolothebard 2024-05-28

İkisini bilerek birleştirip auth demiyor muyuz zaten?

 
kuber 2024-05-28

Authentication ve authorization varken neden ille de...

 
GN⁺ 2024-05-28
Hacker News yorumu
  • "Authorize" ve "Authenticate" Orta Çağ'dan beri kullanılan gayet iyi kelimeler. Bu iki kelimenin anlamı büyük ölçüde değişmedi.
  • Bu iki kelime kriptografik sistemlerde önemli bir ayrımı ifade eder. Karışıklığı azaltmak için kelimeleri değiştirmek yardımcı olmayacak gibi görünüyor.
  • Kafa karışıklığının "auth" adından kaynaklandığı iddiası pek ikna edici değil. Kelimeleri değiştirmenin sorunu çözeceği düşünülmüyor.
  • "authn" ve "authz" kısaltmalarını kullanmak iyi olur. Ama uzun kelimeleri kullanmak da sorun değil.
  • "Identity" ve "Access" Management (IAM) standart terimlerdir. Kişisel olarak "authnz" terimini tercih ediyorum.
  • "Login", token veya anahtar tabanlı kimlik doğrulamayı kapsamaz. Servis hesapları login olmaz ama yine de kimlik doğrulama ve yetkilendirme gerekir.
  • Authn ile Authz arasındaki ayrım çok net değil. Bazen açık terimlerden çok havalı terimleri seviyor gibiyiz.
  • IAM sistemlerinde "auth" terimini kullanmakla ilgili hiç sorun yaşamadım. Daha spesifik bir ifade gerektiğinde uygun bir kalıp kullanılabilir.
  • "login" ve "permissions", sistemin bütün anlamını ve karmaşıklığını yakalamıyor. Authentication, login'den daha geniş bir anlama sahip.
  • Kimlik doğrulama ve yetkilendirme birbiriyle yakından ilişkilidir. Kimlik doğrulama olmadan yetkilendirme yapılamaz.
  • Login, authentication için uygun bir karşılık değil. Kimlik doğrulamanın login gerektirmediği durumlar da vardır.
  • "auth", hem kimlik doğrulama hem de yetkilendirme anlamına gelebilir. Çünkü bu iki kavram sık sık birlikte kullanılır.
  • Kimlik doğrulama ve yetkilendirme, BT ve bilgi güvenliğinde standart terimlerdir. Karışıklığı önlemek için tam kelimeleri kullanmak daha iyidir.
  • "authn" ve "authz", teknik kişiler arasında gayet kullanılabilir. Genel kullanıcı kitlesi içinse "login" ve "permissions" kullanmak daha uygundur.
  • Günlük hayatta da benzer kavramlar vardır. Örneğin bir iş rozeti kimliği doğrular ve erişim yetkisi verir.
  • Yetkilendirme ile izinler aynı şey değildir. İzinler, belirli bir kullanıcıya atanmamış haklar veya ayrıcalıklardır.
  • Yetkilendirme iki anlama gelebilir. Kullanıcıya belirli bir işlemi yapma hakkı verme süreci ve bunun kontrol edilmesi.
  • "access control", çalışma anındaki erişim kontrolünü ifade edebilir. Bu, uygulamanın kullanıcıyı doğruladıktan sonra yaptığı işlemdir.
  • "authN" ve "authZ" yeterince uygun ve iyi anlaşılıyor. Yetkilendirme her zaman izinlerle kullanıcı arasındaki ilişkiyle ilgilidir.