Yetkilendirme ve Kimlik Doğrulama

Network dünyasında pek çok karşımıza çıkan kavramlardandır: Authentication (kimlik doğrulama) ve Authorization (yetkilendirme). Kelime olarak birbirlerine yakın olduğu için sanki aynı anlama sahiplermiş gibi anlaşılabilir ancak değildir. Biri sizin elinizdeki biletle kapıdan girişinizi onaylarken diğeri elinizdeki biletle nereye oturacağınızı gösterir. Bu iki terim söyle anlatılıyor:
  • Authentication (Kimlik Doğrulama): Bu adım, bir kullanıcının kimliğini doğrulamayı içerir. Kullanıcı, genellikle bir kullanıcı adı ve şifre veya daha güçlü kimlik doğrulama yöntemleri kullanarak sisteme giriş yapar. Bu aşama, kullanıcının sistemi kullanmaya yetkili olup olmadığını belirler.
  • Authorization (Yetkilendirme): Kimlik doğrulama adımından sonra gelir. Bu adımda, sisteme giriş yapan kullanıcının ne tür işlemleri gerçekleştirebileceği belirlenir. Kullanıcının erişebileceği kaynaklar, yapabileceği işlemler ve genel yetkiler belirlenir. Yetkilendirme, bir kullanıcının sistemi nasıl kullanabileceğini tanımlar.
Yani, teknik olarak authentication, bizim kullanıcı adı ve şifre girerek (veya arka planda seri numarası ve MAC adresleriyle yapılan benzer işlemlerle) başlattığımız kullanıcının kimliğini doğrulama sürecidir ve kullanıcının kimlik bilgileri ile sisteme giriş yapmasını sağlar. Authorization ise kimlik doğrulamasından sonra gelen adımdır ve yine kullanıcı pratiğinde 'bu hesapla hangi kanalları izleyebiliyorum, premium olmadan neleri yapabiliyorum' dediğimiz, kullanıcının ne tür erişim ve yetkilere sahip olduğunu belirler adımdır.

Bu süreçlerin güvenli yönetilmesi ve pratik bir kullanıcı deneyimi sağlanması için 'token', 'key' ve 'signature' gibi araçları kullanıyoruz. Token kullanıcının sürekli kullanıcı adı ve şifre girmeden işlem yapmasını sağlarken, key ve signature ise mesajın gizli bir şekilde ve sadece ilgili yetkili sahip kişiler tarafından okunmasını sağlıyor.
  • Token (Belirteç): Authentication sürecinde, kullanıcının kimlik bilgileri doğrulandığında genellikle bir token üretilir ve kullanıcıya verilir. Bu token, kullanıcının oturumu açıkken belirli işlemleri gerçekleştirmesine izin veren bir tür kimlik bilgisidir. Örneğin, bir JWT (JSON Web Token) kullanılabilir. Token, kullanıcının tekrar tekrar kimlik bilgilerini girmesini önler ve kullanıcının yetkilendirilmiş olduğu sürece geçerlidir. 
Signature
  • Key (Anahtar): Bir anahtar, veri şifreleme ve şifre çözme işlemleri için kullanılan bir bilgidir. İki tür anahtar vardır: genel anahtar (public key) ve özel anahtar (private key). Bu çift anahtar sistemi, genellikle asymmetric (asimetrik) şifreleme olarak bilinir.
    • Genel anahtar, veriyi şifrelemek için kullanılır.
    • Özel anahtar, şifreli veriyi çözmek için kullanılır.
  • Signature (İmza): İmza, bir verinin belli bir anahtar ile şifrelenmiş bir değeridir. Bu değer, verinin bütünlüğünü ve kaynağını doğrulamak için kullanılır. Bir mesajı gönderen kişi, özel anahtarıyla mesajı imzalar ve alıcı, genel anahtarla bu imzayı çözerek mesajın doğru kişi tarafından gönderildiğini doğrular.
Signature (imza) genellikle iletişimin güvenliğini sağlamak amacıyla kullanılır. Özellikle HTTPS gibi güvenli protokollerde, iletişimdeki veriler bir anahtar ile şifrelenir ve karşı taraf, bu verinin doğru bir şekilde gönderildiğini ve değiştirilmediğini kontrol etmek için bir imza kullanır.

Son tahlilde cookies (çerezler) den de bahsetmekte fayda var. Çerezler, sunucu ile browser (tarayıcı) arasındaki bilgi tutmak için kullanılır. Sunucu gönderir, browser'da bu bilgiyi tutar. Genelde bu bilgiler kullanıcının oturum durumu, tercihleridir. Daha özellemiş bir işlem için aynı kullanıcının tarayıcıyı kullandığı fikri ile kullanıcının tercihleri sunucuya iletilir.   

Yorumlar