ASP.NET Core'da TOTP kimlik doğrulayıcı uygulamaları için QR kodu oluşturmayı etkinleştirme

ASP.NET Core, tek tek kimlik doğrulaması için kimlik doğrulayıcı uygulamaları desteğiyle birlikte gelir. Zaman Tabanlı Tek Seferlik Parola Algoritması (TOTP) kullanan iki faktörlü kimlik doğrulaması (2FA) kimlik doğrulama uygulaması, 2FA için sektör tarafından önerilen yaklaşımdır. TOTP kullanan 2FA, SMS 2FA'ya tercih edilir. Kimlik doğrulayıcı uygulaması, kullanıcıların kullanıcı adlarını ve parolalarını onayladıktan sonra girmeleri gereken 6 ile 8 basamaklı bir kod sağlar. Genellikle bir kimlik doğrulayıcı uygulaması akıllı telefona yüklenir.

ASP.NET Core web uygulaması şablonları kimlik doğrulayıcıları destekler ancak QR kodu oluşturma desteği sağlamaz. QR kod oluşturucuları 2FA kurulumunu kolaylaştırır. Bu belge, 2FA yapılandırma sayfasına QR kodu oluşturma ekleme hakkında Sayfalar ve MVC uygulamaları için rehberlik Razor sağlar. Web Uygulamaları için geçerli yönergeler için Blazor bkz . ASP.NET Core Blazor Web App'te TOTP kimlik doğrulayıcı uygulamaları için QR kodu oluşturmayı etkinleştirme.

ASP.NET Core web uygulaması şablonları kimlik doğrulayıcıları destekler ancak QR kodu oluşturma desteği sağlamaz. QR kod oluşturucuları 2FA kurulumunu kolaylaştırır. Bu belge, 2FA yapılandırma sayfasına QR kodu oluşturma işlemi ekleme işleminde size yol gösterir.

İki öğeli kimlik doğrulaması, Google veya Facebook gibi bir dış kimlik doğrulama sağlayıcısı kullanılarak gerçekleşmez. Dış oturum açma işlemleri, dış oturum açma sağlayıcısının sağladığı mekanizmayla korunur. Örneğin, Microsoft kimlik doğrulama sağlayıcısının bir donanım anahtarı veya başka bir 2FA yaklaşımı gerektirdiğini düşünün. Varsayılan şablonlar "yerel" 2FA'yı zorunlu kıldıysa, kullanıcıların yaygın olarak kullanılan bir senaryo olmayan iki 2FA yaklaşımını karşılaması gerekir.

2FA yapılandırma sayfasına QR kodları ekleme

Bu yönergeler depodan https://davidshimjs.github.io/qrcodejs/ kullanılırqrcode.js.

  • qrcode.js JavaScript kitaplığınıwwwroot\lib projenizdeki klasöre indirin.
  • oluşturmak /Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtmliçin İskele'dekiIdentityyönergeleri izleyin.
  • içinde /Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml, dosyanın sonundaki bölümü bulun Scripts :
@section Scripts {
    @await Html.PartialAsync("_ValidationScriptsPartial")
}
  • adlı qr.jswwwroot/js yeni bir JavaScript dosyası oluşturun ve QR Kodunu oluşturmak için aşağıdaki kodu ekleyin:
window.addEventListener("load", () => {
  const uri = document.getElementById("qrCodeData").getAttribute('data-url');
  new QRCode(document.getElementById("qrCode"),
    {
      text: uri,
      width: 150,
      height: 150
    });
});
  • Bölümü güncelleştirerek Scripts daha önce indirilmiş olan qrcode.js kitaplığa bir başvuru ekleyin.
  • qr.js QR kodunu oluşturmak için çağrısıyla birlikte dosyasını ekleyin:
@section Scripts {
    @await Html.PartialAsync("_ValidationScriptsPartial")

    <script type="text/javascript" src="~/lib/qrcode.js"></script>
    <script type="text/javascript" src="~/js/qr.js"></script>
}
  • Sizi bu yönergelere bağlayan paragrafı silin.

Uygulamanızı çalıştırın ve QR kodunu tarayabildiğinizden ve doğrulayıcının kanıtlayacağı kodu doğruladığınızdan emin olun.

QR kodunda site adını değiştirme

QR kodundaki site adı, projenizi ilk oluştururken seçtiğiniz proje adından alınır. yöntemini /Areas/Identity/Pages/Account/Manage/EnableAuthenticator.cshtml.csiçinde GenerateQrCodeUri(string email, string unformattedKey) arayarak değiştirebilirsiniz.

Şablondaki varsayılan kod aşağıdaki gibi görünür:

private string GenerateQrCodeUri(string email, string unformattedKey)
{
    return string.Format(
        AuthenticatorUriFormat,
        _urlEncoder.Encode("Razor Pages"),
        _urlEncoder.Encode(email),
        unformattedKey);
}

çağrısındaki string.Format ikinci parametre, çözüm adınızdan alınan site adınızdır. Herhangi bir değere değiştirilebilir, ancak her zaman URL kodlanmış olmalıdır.

Farklı bir QR Kod kitaplığı kullanma

QR Kod kitaplığını tercih ettiğiniz kitaplıkla değiştirebilirsiniz. HTML, kitaplığınızın sağladığı mekanizmaya göre QR Kodu yerleştirebileceğiniz bir öğe içerir qrCode .

QR Kodu için doğru biçimlendirilmiş URL'yi şu adreste bulabilirsiniz:

  • AuthenticatorUri özelliğine sahiptir.
  • data-url öğesindeki qrCodeData özelliği.

TOTP istemcisi ve sunucu süresi dengesizliği

TOTP (Zaman Tabanlı Tek Seferlik Parola) kimlik doğrulaması, hem sunucu hem de kimlik doğrulayıcı cihazın doğru zamana sahip olmasına bağlıdır. Belirteçler yalnızca 30 saniye sürer. TOTP 2FA oturum açma işlemleri başarısız oluyorsa, sunucu süresinin doğru olup olmadığını ve tercihen doğru bir NTP hizmetine eşitlenip eşitlenmediğini denetleyin.