ASP.NET Core'de Google dış oturum açma ASP.NET Core

Valeriy Novytskyy ve Rick Anderson tarafından

Bu öğreticide, kullanıcıların önceki sayfada oluşturulan ASP.NET Core 3.0 projesini kullanarak Google hesaplarıyla oturum açmasını nasıl etkinleştirebilirsiniz?

Google API Konsolu projesi ve istemci kimliği oluşturma

  • Microsoft.AspNetCore.Authentication.Google NuGet paketini uygulamaya ekleyin.
  • Google Sign-In web uygulamanıza tümleştirme (Google belgeleri) yönergelerini izleyin.
  • Google konsolunun Kimlik Bilgileri sayfasında CREATE CREDENTIALS > OAuth istemci kimliği seçeneğini seçin.
  • Uygulama türü iletişim kutusunda Web uygulaması'ı seçin. Uygulama için bir Ad girin.
  • Yetkili yeniden yönlendirme URI'leri bölümünde URI EKLE'yi seçerek yeniden yönlendirme URI'sini ayarlayın. Örnek yeniden yönlendirme https://localhost:{PORT}/signin-google URI'si: yer {PORT} tutucusu uygulamanın bağlantı noktasıdır.
  • OLUŞTUR düğmesini seçin.
  • Uygulamanın yapılandırmasında kullanmak üzere İstemci Kimliği ve gizli anahtarı kaydedin.
  • Siteyi dağıtırken şu iki olaydan birini kullanın:
    • Google Konsolu'nun uygulamanın yeniden yönlendirme URI'sini uygulamanın dağıtılan yeniden yönlendirme URI'sini güncelleştirin.
    • Üretim uygulaması için Google Konsolunda üretim yeniden yönlendirme URI'sini kullanarak yeni bir Google API kaydı oluşturun.

Google istemci kimliğini ve gizli kimliğini depolama

Gizli Gizli Yönetici ile Google istemci kimliği ve gizli değer gibi hassas ayarları depolar. Bu örnek için aşağıdaki adımları kullanın:

  1. Gizli depolamayı etkinleştirme yönergelerine göre gizli depolama için projeyi başlatma.

  2. Gizli anahtarları ve ile yerel gizli anahtar deposuna hassas ayarları Authentication:Google:ClientId Authentication:Google:ClientSecret depolar:

    dotnet user-secrets set "Authentication:Google:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Google:ClientSecret" "<client-secret>"
    

Ayırıcı, : tüm platformlarda ortam değişkeni hiyerarşik anahtarlarla birlikte çalışmaz. __çift alt çizgi şöyledir:

  • Tüm platformlar tarafından de destekler. Örneğin, : ayıracı Bash tarafından desteklanmaz,ancak __ bu şekildedir.
  • Otomatik olarak bir ile değiştirilir :

API kimlik bilgilerinizi ve kullanımınızı API Konsolu'nu kullanarak yönetebilirsiniz.

Google kimlik doğrulamasını yapılandırma

Google hizmetini uygulamasına Startup.ConfigureServices ekleyin:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));
    services.AddDefaultIdentity<IdentityUser>(options =>
        options.SignIn.RequireConfirmedAccount = true)
            .AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddRazorPages();

    services.AddAuthentication()
        .AddGoogle(options =>
        {
            IConfigurationSection googleAuthNSection =
                Configuration.GetSection("Authentication:Google");

            options.ClientId = googleAuthNSection["ClientId"];
            options.ClientSecret = googleAuthNSection["ClientSecret"];
        });
}

Addidentity çağrısı varsayılan şema ayarlarını yapılandırır. Addaduthentication (dize) aşırı yüklemesi defaultscheme özelliğini ayarlar. Addaduthentication (eylem<>authenticationoptions) aşırı yüklemesi, farklı amaçlarla varsayılan kimlik doğrulama düzenlerini ayarlamak için kullanılabilen kimlik doğrulama seçeneklerinin yapılandırılmasını sağlar. Daha önce yapılandırılmış AddAuthentication authenticationoptions özelliklerini geçersiz kılmak için sonraki çağrılar.

Kimlik doğrulama işleyicisi kaydeden Authenticationbuilder genişletme metotları, kimlik doğrulama düzeni başına yalnızca bir kez çağrılabilir. Düzen özellikleri, Düzen adı ve görünen ad yapılandırmasına izin veren aşırı yüklemeler var.

Google ile oturum açma

  • Uygulamayı çalıştırın ve Oturum aç'a tıklayın. Google ile oturum açma seçeneği görüntülenir.
  • Kimlik doğrulaması için Google'a yeniden yönlendiren Google düğmesine tıklayın.
  • Google kimlik bilgilerinizi girdikten sonra web sitesine geri dönersiniz.

İstek bilgilerini bir ara sunucu veya yük dengeleyici ile ilet

Uygulama bir ara sunucu veya yük dengeleyici arkasında dağıtılırsa, bazı özgün istek bilgileri, istek üst bilgilerinde uygulamaya iletilebilir. Bu bilgiler genellikle güvenli istek düzeni ( https ), ana bilgisayar ve ISTEMCI IP adresini içerir. Uygulamalar, özgün istek bilgilerini bulacak ve kullanacak şekilde bu istek üst bilgilerini otomatik olarak okumayın.

Düzen, dış sağlayıcılarla kimlik doğrulama akışını etkileyen bağlantı oluşturma sırasında kullanılır. Güvenli düzen () kaybı, https uygulamanın hatalı güvenli olmayan yeniden yönlendirme URL 'leri üretmesine neden olur.

İstek işleme için özgün istek bilgilerini uygulama için kullanılabilir hale getirmek üzere Iletilen üstbilgiler ara yazılımını kullanın.

Daha fazla bilgi için bkz. Yapılandırma ASP.NET Core sunucuları ve yük dengeciler ile çalışacak şekilde yapılandırma.

Birden çok kimlik doğrulama sağlayıcısı

Uygulama birden çok sağlayıcı gerektirdiğinde, sağlayıcı uzantısı yöntemlerini Addaduthenticationarkasında zincirle:

services.AddAuthentication()
    .AddMicrosoftAccount(microsoftOptions => { ... })
    .AddGoogle(googleOptions => { ... })
    .AddTwitter(twitterOptions => { ... })
    .AddFacebook(facebookOptions => { ... });

Google kimlik GoogleOptions doğrulaması tarafından desteklenen yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. API başvurusu. Bu, kullanıcı hakkında farklı bilgiler talep etmek için kullanılabilir.

Varsayılan geri çağırma URI'sini değiştirme

URI /signin-google segmenti, Google kimlik doğrulama sağlayıcısının varsayılan geri çağırma değeri olarak ayarlanır. Google kimlik doğrulama ara yazılımını sınıfın devralınan ) özelliği aracılığıyla yapılandırırken varsayılan geri çağırma RemoteAuthenticationOptions.CallbackPath URI'sini GoogleOptions değiştirebilirsiniz.

Sorun giderme

  • Oturum açma çalışmıyorsa ve hata almıyorsanız, sorunun hata ayıklamasını kolaylaştırmak için geliştirme moduna geçiş edin.
  • içinde çağrısıyla yapılandırılmamışsa, ArgumentException'da sonuçların kimliğini doğrulamaya Identity services.AddIdentity ConfigureServices çalışıldığında: 'SignInScheme' seçeneği sağlanmalıdır. Bu öğreticide kullanılan proje şablonu, bunun yapılmasına sağlar.
  • İlk geçişi uygulayarak site veritabanı oluşturulmadı ise, istek hatası işleniyorken bir veritabanı işlemi başarısız oldu alırsınız. Veritabanını oluşturmak için Geçişleri Uygula'ya tıklayın ve hatayı geçerek devam etmek için sayfayı yenileyin.

Sonraki adımlar

  • Bu makalede, Google ile nasıl kimlik doğrulamasına sahip olduğunuz gösterildi. Önceki sayfada listelenen diğer sağlayıcılarla kimlik doğrulaması yapmak için benzer bir yaklaşımı takip edebilirsiniz.
  • Uygulamayı Azure'da yayımlayın, ClientSecret Google API Konsolu'nu sıfırlayın.
  • uygulama ayarlarında Authentication:Google:ClientId Authentication:Google:ClientSecret ve uygulama ayarlarını Azure portal. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okumak için ayarlanır.