Türkçe
  • mfa
  • 2fa
  • totp
  • nodejs
  • güvenlik
  • kimlik doğrulama
  • kimlik doğrulayıcı uygulama
  • otplib

Node.js'te kimlik doğrulayıcı uygulamalarla İki Faktörlü kimlik doğrulamayı (2FA) nasıl uygularsınız?

Kimlik doğrulayıcı uygulamaları, TOTP ve otplib kütüphanesi kullanarak Node.js'te iki faktörlü kimlik doğrulamanın (2FA) nasıl uygulanacağını öğrenin. Bu adım adım kılavuz, QR kodları oluşturmaktan kimlik doğrulama kodlarını doğrulamaya kadar her şeyi kapsar.

Yijun
Yijun
Developer

İki Faktörlü (2FA) Kimlik Doğrulama Nedir?

Geleneksel uygulamalarda, genellikle kimlik kimlik doğrulayıcılarımız olarak E-posta/Kullanıcı Adı/Telefon kullanırız. Bu kimlik doğrulayıcılar ile ilgili parolalar veya doğrulama kodları birleştirildiğinde kimlik doğrulama sürecini tamamlayabiliriz.

Ancak, daha yüksek güvenlik gereksinimlerine sahip senaryolarda yalnızca kimlik doğrulayıcılara dayanarak kimlik doğrulaması yapmak yeterli değildir. Bunun nedeni, bu kimlik doğrulayıcıların ve ilgili doğrulama bilgilerinin sızıntılara karşı savunmasız olabilmesidir.

Bu noktada İki Faktörlü Kimlik Doğrulama (2FA) devreye girer - bu, kullanıcıların kimliklerini doğrulamak için iki farklı kimlik doğrulama faktörü sağlamalarını gerektiren ek bir güvenlik katmanı sağlar, bu sayede hesaba erişmeye çalışan kişinin gerçekten yasal kullanıcı olduğundan emin olunur.

Yaygın 2FA yöntemleri şunlardır:

  • Kimlik doğrulayıcı uygulamalar kullanarak TOTP kimlik doğrulama
  • Biyometrik kimlik doğrulama
  • Cihaza dayalı kimlik doğrulama
  • SMS doğrulama kodları

Bu öğreticide, uygulamanızın Node.js tabanlı 2FA TOTP tabanlı kimlik doğrulamasını otplib kütüphanesi kullanarak uygulamayı odaklanacağız.

TOTP Kimlik Doğrulama Nedir?

TOTP, Zamana dayalı tek seferlik parolalar anlamına gelir. Wikipedia'nın dediği gibi, mevcut zamanı benzersizliğin bir kaynağı olarak kullanan bir bilgisayar algoritması kullanarak tek seferlik parola (OTP) üreten bir algoritmadır.

Kullanıcının telefonu ile uygulama sunucusu arasında paylaşılan bir TOTP gizli anahtarı ile kullanıcının telefonu ve uygulama sunucusu aynı anda aynı TOTP kodunu üretebilir:

TOTP üretimi zamana dayandığından, çevrimdışı hesaplanabilir. Ayrıca, TOTP sayısal bir dizi ürettiğinden basit ve kullanıcı dostudur. Bu nedenle, TOTP doğrulaması genellikle 2 faktörlü kimlik doğrulama aracı olarak kullanılır.

Kullanıcılar TOTP'yi bir 2 faktörlü kimlik doğrulama yöntemi olarak kullandıklarında, sıklıkla TOTP gizli anahtarını depolama ve TOTP kodlarını oluşturmayla ilgili zorluk yaşarlar. İşte burada kimlik doğrulayıcı uygulamalar devreye girer. Kimlik doğrulayıcı uygulamaları TOTP gizli anahtarını depolamak için kullanabiliriz ve kimlik doğrulayıcı uygulamalar sizin için otomatik olarak TOTP kodları oluşturacaktır. Doğrulama gerektiğinde, sadece kimlik doğrulayıcı uygulamanızı açmanız yeterlidir ve TOTP gizli anahtarına karşılık gelen TOTP kodunu alırsınız. Popüler Kimlik Doğrulayıcı uygulamaları arasında Google Authenticator ve Microsoft Authenticator bulunmaktadır.

TOTP'yi iki faktörlü kimlik doğrulama olarak uygula süreci iki adımı içerir:

  1. TOTP gizli anahtarını kullanıcıya bağlama.
  2. Kullanıcının TOTP kodunu ilgili TOTP gizli anahtarıyla doğrulama.

TOTP'yi bir kullanıcıya bağlama süreci ise şu şekildedir:

Kullanıcı TOTP'yi bağladıktan sonra, doğrulama için kullanabilirler. Süreç şu şekildedir:

Diyagramda gösterildiği gibi, kullanıcı tarafında TOTP gizli anahtarını yönetmek ve TOTP kodları oluşturmak için kimlik doğrulayıcı uygulamalar kullanıyoruz. Sunucu tarafında, bir TOTP gizli anahtarı oluşturmayı ve kullanıcı tarafından gönderilen TOTP kodunu doğrulamayı desteklememiz gerekiyor. Bu makalede, sunucu tarafında TOTP ile ilgili işlevleri entegre etmek için otplib kullanacağız.

Node.js uygulamanız için otplib kullanarak TOTP tabanlı 2FA'yı uygulayın

Uygulamanızın Express.js tabanlı olduğunu ve kullanıcıların /sign-in uç noktasından oturum açtığını varsayarak, kullanıcı giriş işleminde TOTP'yi desteklemek için planımız aşağıdaki gibidir:

  1. Kullanıcı TOTP'ye bağlı değilse, TOTP gizli anahtarını bir QR kodu şeklinde kullanıcıya gönderin ve bağlanmalarını isteyin.
  2. Kullanıcı TOTP'ye zaten bağlıysa, TOTP doğrulaması yapmalarını isteyin.

Önce, proje için bağımlılıkları yükleyelim: otplib ve qrcode:

Şimdi /sign-in uç noktamızı geliştirelim.

Uygulamamıza göre, bir kullanıcı TOTP'ye bağlı olmadığında ön tarafa bir QR kodu göndereceğiz:

Bind TOTP

Kullanıcı QR kodunu kimlik doğrulayıcı uygulama ile tarıyor ve kimlik doğrulayıcı uygulama bir TOTP kodu oluşturup ilgili TOTP gizli anahtarını saklayacaktır.

Google Authenticator

Kullanıcı alınan TOTP kodunu uygulama sunucusuna geri gönderir. Kod başarılı bir şekilde doğrulanırsa, bu TOTP'yi kullanıcıya bağlayabiliriz.

Bu yüzden, kullanıcıdan gönderilen TOTP kodunu alacak bir /verify-totp API'sini uygulayalım.

Bu şekilde, kullanıcı için TOTP'yi başarıyla bağladık. Daha sonra, kullanıcı oturum açtığında, yalnızca Kimlik Doğrulayıcı Uygulamayı açmaları, daha önce bağlanan TOTP gizli anahtarına karşılık gelen doğrulama kodunu göndermeleri ve kimlik doğrulama işlemi tamamlanacaktır.

Verify TOTP

/verify-totp API'sinde, kullanıcıya önceden bağlı olan TOTP gizli anahtarını kullanarak TOTP kodunu doğruluyoruz.

Özet

Bu makale sayesinde, uygulamalarınız için kimlik doğrulayıcı uygulama doğrulamasını nasıl entegre edeceğinizi öğrenmiş olmalısınız.

Ancak, bu sadece basit bir örnektir. Uygulamanız büyük olduğunda veya karmaşık hale gelmesi bekleniyorsa, yeni bir kimlik doğrulama yöntemini entegre etmek önemli maliyetler doğurabilir.

Harika haber şu ki: Logto, kapsamlı bir kimlik doğrulama çözümü sağlayıcı olarak, kimlik doğrulayıcı uygulama doğrulaması dahil çok faktörlü kimlik doğrulama (MFA) desteği sunar. Logto'yu kullanarak, MFA ile güvenli ve verimli bir kullanıcı oturum açma sürecini uygulamanıza sadece birkaç dakika içinde sorunsuz bir şekilde entegre edebilirsiniz!