İçeriğe geç

İki-Faktör Doğrulamasını NodeJS entegre etmek

Önemli çevrimiçi kimlik bilgilerinizi korumak için çeşitli stratejiler vardır. Parola yöneticileri ve oluşturucular hakkında sık sık duyuyoruz, ancak benim için daha önemli olan strateji iki faktörlü kimlik doğrulama (2FA) kullanmaktır. Şifreler tahmin edilebilir, telefon numaraları sahte olabilir, ancak iki faktörlü kimlik doğrulamanın kullanılması, temelde kullanıcının, Google Authenticator gibi bir uygulamaya sahip fiziksel bir cihaza sahip olmasını, söz konusu uygulama için fazladan bir katman sağlayan gizli bir anahtarla yüklenmiş olmasını gerektirir.

Gizli Anahtar Oluşturun

Gizli Anahtar oluşturmamız için Speakeasy Modülünü kullanacağız kurulumu npm install speakeasy şeklinde gerçekleştirebilirsiniz.

var speakeasy = require('speakeasy');

var secret = speakeasy.generateSecret({
name:"Test Projesi", /*Uygulamada gözükücek Başlık/İsim giriniz*/
length:32 /* Gizli anahtarımızın uzunluğunu belirtiyoruz istediğiniz uzunluğu belirtebilirsiniz */
});
console.log(secret.base32, secret.otpauth_url) //Bu iki veriyi KULLANICI veritabanına kayıt ediniz

// Örnek Veri* GBLEOOTBO5BEUMRGMFBSU3CUG45FUW2HMNFHKZZKGZCDQVRTMEXA otpauth://totp/Test%20Projesi?secret=GBLEOOTBO5BEUMRGMFBSU3CUG45FUW2HMNFHKZZKGZCDQVRTMEXA

QR kodu oluşturma

Google Authenticator gibi uygulamalar, kullanıcıların bir QR kodunu taramasına veya metin anahtarını girmesine izin verir. Bir görüntüyü taramak çok daha hızlıdır, bu nedenle QR kodunu sunmak, kullanıcınız için büyük kolaylık sağlayacaktır.Bunu gerçekleştirmek içinde qrcode Modülünü kullanacağız.

var QRCode = require('qrcode');

//Veritabanında kullanıcımıza ulaşıp KAYIT ETTIĞIMIZ verilere ulaşıp kullanmamız gerek!
QRCode.toDataURL(secret.otpauth_url, function(err, image_data) {
  console.log(image_data); // Oluşturulmuş QR kodun data URI olarak çıktısı
});
Oluşturulan Örnek QR kod

QR kod’u okutma ve Tokeni görüntüleme

Bu noktada kullanıcının Google Authenticator’ı (veya Authy, vb.) Açmış ve QR kodunu taramış olması gerekir; cihazın uygulamasına web uygulamanız için bir giriş eklenecektir. Bu noktadan sonra, kullanıcı oturum açmak (veya korunmasını istediğiniz herhangi bir eylemi gerçekleştirmek) istediğinde, sisteminiz kullanıcının 2FA kullanmak istediğini tanımalı ve siz de uygulamasından belirteci girmesini zorunlu kılmalısınız.

Google Authenticator da QR kodu okuttukan sonrası

Debug amaçlı istediğiniz token’e ulaşabilmek için bu kod’u kullanabilirsiniz…

// Veritabanından çekeceğimiz base32 Kodu
var secret = ...
;

var token = speakeasy.totp({
  secret: secret,
  encoding: 'base32'
});

Tokenin Sağlanması / Tokenin Oluşturulması.

var token = '...'; // POST gelen requestinden Kullanıcının GİRDİĞİ Token verisi.

// secret.base32 yi veritabanından çekiniz.
var secret = ...;

// Kullanıcı tokeni'nin şu anda olması gerekenle eşleştiğini doğrulayın
var verified = speakeasy.totp.verify({
  secret: secret,
  encoding: 'base32',
  token: token
});

Token eşleşirse, kullanıcıya güvenilebilir; Token eşleşmezse, web uygulaması kullanıcıdan tekrar denemesini istemelidir. Authenticator’ın her <x> saniyede bir yeni bir Token sağladığını, dolayısıyla yanlış bir Tokenin hemen kırmızı bayrak oluşturmaması gerektiğini unutmayın; token, kullanıcının formu gönderdiği zamana kadar geçerliliğini yitirmiş olabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir