Bu makale, iki faktörlü kimlik doğrulamasını ayrıntılı olarak açıklamaktadır ve bunun nasıl uygulanacağı .NET 5’te IdentityServer4 ve bir SMS sağlayıcısı (Twilio) gibi kimlik çerçeveleri kullanılarak.

{{LINE_11}} Aşağıdaki bölümleri içerir:

İki faktörlü kimlik doğrulama nedir?

Bu bağlamdaki bir faktör, bir uygulamayı veya hizmeti hesabın sahibi olduğunuza ikna edebilmenin bir yolunu ima eder. Kullanıcı adı/şifre en yaygın kimlik doğrulama faktörü olarak yaygın olarak kullanılır. Bununla birlikte, BT ile ilişkili birçok güvenlik sorunu ve son yaygın veri ihlalleri nedeniyle-tek faktörlü kimlik doğrulaması daha az güvenli hale gelmiştir. İki faktörlü kimlik doğrulama, hesabınıza erişmeden önce devreye giren ek bir güvenlik katmanıdır. Standart Oturum Açma işlemine ek olarak-bir kod göndererek (e-postanıza veya kısa mesaj olarak) kullanıcı kimliğini doğrulamak için ekstra bir adım sunar. Bu şekilde kimliğiniz kanıtlanır ve ancak o zaman erişim verilir.

2FA nasıl çalışır?

2FA’da şifre hala ilk kimlik doğrulama faktörünüzdür - bu nedenle hesabınıza giriş yaptığınızda sizi hesap sahipliğini doğrulamanız gereken başka bir sayfaya yönlendirir. Bu çeşitli yollar kullanılarak yapılabilir:

  1. Uygulama, e-posta adresinize genellikle OTP (bir kerelik şifreler) adı verilen bir doğrulama kodu gönderir.
  2. Kod, telefonunuzda kısa mesaj olarak teslim edilir.
  3. Mobile üzerinde oturum açma isteklerine izin verebileceğiniz bir kimlik doğrulayıcı uygulaması yüklersiniz. Not: Bu doğrulama kodları rastgele oluşturulur ve kullanıldıktan sonra süresi dolur. Ayrıca, kısa ömürlüdürler - bu nedenle kodu kullanmadan önce kısa bir pencere vardır (bu, bilgisayar korsanının doğrulama kodlarını zorlamasını önler).

2FA’yı çok faktörlü kimlik doğrulama olarak adlandırabilir miyiz?

Kimlik doğrulama yöntemleri iki faktörle sınırlı değildir. Birçok uygulama ve hizmet kullanıcılarını 2FA’nın ötesine taşıyor ve çok faktörlü kimlik doğrulama kullanıyor. 2FA ve MFA (çok faktörlü kimlik doğrulama) genellikle birbirinin yerine kullanılır. Ancak bir fark var. Çok faktörlü kimlik doğrulamada iki veya daha fazla faktör kullanılır. Kullanıcının kimliğini doğrulamak için bir kullanıcının IP adresini, coğrafi konum ve cihaz bilgilerini şifre ve OTP gibi diğer faktörlere kontrol edebilir. Bu nedenle, 2FA’nın MFA’nın bir alt kümesi olduğunu söyleyebiliriz. 2FA’da sadece iki faktör olacaktır, oysa çok faktör iki veya daha fazla faktör kullanabilir. MFA, geleneksel kimlik doğrulama sürecine birden fazla güvenlik katmanı eklediği için bilgisayar korsanları için zorlaştırır.

2FA kullanan herhangi bir dezavantaj var mı?

Modern uygulamalarda bulunan birçok ‘güvenlik ve gizlilik’ çözümüne benzer. Ayrıca, kullanıcı deneyiminde sürtünmeye neden olabilecek ek bir adım olduğu için bir fiyat - rahatsızlık ile birlikte gelir. Ancak, birçok uygulama ve hizmet tarafından kabul edilmektedir, böylece bu değiş tokuş kabul edilebilir hale gelir.

2FA kimlik doğrulamasını nasıl uygulayabilirim?

Bu bölümde, IdentityServer4 ve Twilio’yu kullanarak .NET5’te 2FA’nın nasıl uygulanacağını öğreneceğiz. Öyleyse Twilio’da bir deneme hesabı oluşturalım:

  1. kaydolun
  2. Geçerli bir telefon numarası sağlayarak hesabınızı doğrulayın. Hesabınız doğrulandıktan sonra konsol kontrol panellerini kullanabilirsiniz.
Twilio Gösterge Tablosu
  1. Hesabınızı SID ve Auth Tokeninizi gösterge tablosundan kopyalayın.
  2. SMS/ göndermek için kullanacağınız bir numara satın almak için gezinir/ Not: Twilio, telefon numarasını satın almak için kullanacağınız tüm deneme hesaplarında 15 $ kredi verir.
Twilio - Telefon numarası araması

“SMS yeteneklerini” desteklediği sürece herhangi bir sayı seçebilirsiniz. (Projemizde daha sonra yapılandırmak için kullanacağımız telefon numaranızı not edin). 5. Deneme hesabını kullanarak Twilio, yalnızca aşağıdaki bağlantıyı kullanarak yönetebileceğiniz doğrulanmış bir arayan kimliğine SMS göndermenizi sağlar: Twilio gösterge tablosunu kullanarak yapılandırmanız gereken tek şey budur. Bir ASP.NET Core web uygulaması oluşturalım (aşağıdaki gibi Proje Şablonu’nu seçin ve .NET5’i hedefleyin.

Visual Studio - Yeni Proje

Şimdi Nuget’ten IdentityServer4, Twilio paketlerini entegre edeceğiz.

  1. ``
  2. `` yükleme paketi Twilio -Sürüm 5.55.0 ' IdentityServer4 Quick Ui şu adresten ulaşılabilir: Geliştirici kabuğunda aşağıdaki komutu çalıştırarak projenize ekleyebilirsiniz: IEX ((new-nesnesti System.net.Net.WebClient) .downloadString ('https://raw.githubusercontent.com/Idendentyserver/IdendentityServer4.quickstart.ui/main/getmain.ps1')) ` Doğru yüklenmişse - projenizdeki QuickStart klasörünü görürsünüz:
Proje hiyerarşisi

Bu projeyi oluşturalım ve yürütelim. Karşılama sayfasını aşağıda gösterildiği gibi görebilmeniz gerekir:

Bu şablon bellek içi veri deposunu kullanır, böylece test kullanıcılarınızı config.cs dosyasına ekleyebilirsiniz

Config.cs sınıfı

Startup.cs’i açın ve ConfigServices Yönteminde Aşağıdaki IdentityServer4 hizmetlerini ekleyin:

  services.AddIdentityServer()
        .AddInMemoryIdentityResources(Config.GetIdentityResources())
        .AddTestUsers(Config.GetUsers())
        .AddInMemoryClients(Config.GetClients())
        .AddDeveloperSigningCredential();

Şimdi İstek Boru Hattı’na IdentityServer ekleyin:

app.UseIdentityServer();

Projeyi çalıştırın ve _/hesap/giriş _

IdentityServer4 - Giriş

config.cs ‘da eklendiği gibi kimlik bilgileriyle giriş yapın IdentityServer yapılandırıldıktan ve çalıştırıldıktan sonra. Daha sonra Twilio kullanarak 2FA için destek ekleyebiliriz. Aşağıdaki sınıfı ekleyelim:

  public class TwilioSettings
    {
        public string Sid { get; set; }
        public string Token { get; set; }
        public string From { get; set; }
     }

Bu yapılandırma sınıfı, bağımlılık enjeksiyonu kullanılarak ayarları enjekte etmek için kullanılacaktır.

  1. Projeyi sağlayın ve Twilio’nun Yapılandırması ile Kullanıcı Sırlarını Ekleyin (SID, Jeton, Phonenumber)
  2. Startup.cs ConfigureService yöntemine ayarları enjekte edin
 var twilioSettings = Configuration.GetSection("TwilioSettings");
 services.Configure<TwilioSettings>(twilioSettings);

Startup.cs yapılandırıldı. Şimdi, Twilio kullanarak SMS göndermekten sorumlu olacak AuthMessagSender adlı yeni bir hizmet eklemeye devam edebiliriz. AuthMeSageSender’in uygulayacağı bir arayüz oluşturalım.

public interface ISmsSender
    {
        Task SendSmsAsync(string number, string message);
    }

Bunu startup.cs’ye enjekte edeceğiz.

services.AddTransient <ISmsSender, AuthMessageSender>();

SMS gönderme kodu oldukça basit. Sadece bir Twilio istemcisi oluşturuyoruz ve SMS göndermek için Messageresource.createAreasync yöntemini çağırıyoruz.

public Task SendSmsAsync(string number, string message)
{
              var sid = _twilioSettings.Value.Sid;
            var token = _twilioSettings.Value.Token;
            var from = _twilioSettings.Value.From;
            TwilioClient.Init(sid, token);
            MessageResource.CreateAsync(new PhoneNumber(number),
                from: new PhoneNumber(from),
                body: message);
            return Task.FromResult(0);
}

Kod doğrulaması için bunları yeniden yönlendirebilmemiz için kullanıcının 2FA’yı etkinleştirip etkinleştirmediğini kontrol etmek için giriş yöntemini değiştireceğiz. QuickStart/Görünümlerde Verifycode.cshtml adını ekleyin:

2FA eylemde

Kimlik bilgilerini doğruladıktan sonra doğrulama kodu oluşturmak ve göndermek için hesap/giriş yöntemini değiştirin. Şu anda oturum açma talebini tamamlamak istemiyoruz. Bu nedenle, httpcontext.signinasync yöntem çağrısı kaldırılacak ve bunun yerine rastgele bir doğrulama kodu oluşturacağız ve saklayacağız (şu anda gösteri amacıyla bellek içi mağaza kullanıyoruz).

[HttpPost]

[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginInputModel model, string button)
Kod ekran görüntüsü

Ve sonra kullanıcıyı kod doğrulamasının gerçekleştirileceği ve oturum açma iş akışının tamamlanacağı “VerifyCode” sayfasına yönlendireceğiz. VerifyCode Action’da kullanıcı ve kod bilgilerini bellekten getirip verilen kodla eşleştiriyoruz.

Kod ekran görüntüsü

Kod eşleşirse, Signinasync yöntemini çağırarak ve kullanıcıyı yetkili sayfaya yönlendirerek kimlik doğrulama isteğini tamamlarız. Projeyi çalıştıralım Adım -1: Kullanıcı kimlik bilgileri sağlar.

2FADemo - Giriş

Adım-2: Kimlik bilgileri doğrulanır ve bir doğrulama kodu gönderilir:

2fademo - SMS

Adım-3: Kullanıcı doğru kodu doğrular.

2FADemo - VerifyCode

Adım-4 kodu doğrulandı ve 2FA kimlik doğrulaması tamamlandı.

2FADemo - Yetkili Sayfa

Çözüm:

Bu makalede, 2FA’yı ve .NET5’teki uygulamasını kimlikserver4 ve Twilio’yu kullanarak öğrendik. Bu makalede kullanılan örnek kodunu bu repo ‘dan indirebilirsiniz. 2FA için SMS kullanmak güvenliğinizi kesinlikle güçlendirir, ancak [SIM takas saldırılarına] karşı savunmasızdır 7. Bu nedenle, güvenlik araştırmacıları 2FA’yı, telefon ağında ele geçirilemeyen Authenticator uygulamaları ve güvenlik anahtarları (Yubikey) gibi diğer yaklaşımları kullanmaya teşvik ediyor. Bu konuda daha fazla bilgi edineceğimiz bir makalede - bizi izlemeye devam edin!