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

Valeriy Novytskyy ve Rick Anderson tarafından

Kod örnekleriyle bu öğreticide, kullanıcılarının önceki sayfada oluşturulan örnek bir ASP.NET Core 3.0 projesi kullanarak Facebook hesabıyla oturum açmasını nasıl etkinleştirebilirsiniz? İlk olarak resmi adımları takip eden bir Facebook Uygulama Kimliği oluşturacağız.

Uygulamayı Facebook'ta oluşturma

  • Microsoft.AspNetCore.Authentication.Facebook NuGet paketini projeye ekleyin.

  • Facebook Geliştiricileri uygulama sayfasına gidin ve oturum açın. Henüz bir Facebook hesabınız yoksa, oturum açma sayfasındaki Facebook'a kaydol bağlantısını kullanarak bir hesap oluşturun. Facebook hesabınız olduktan sonra, Facebook Geliştiricisi olarak kaydolmak için yönergeleri izleyin.

  • Yeni Uygulamalarım oluşturmak için Uygulama Oluştur'a tıklayın.

    Geliştiriciler için Facebook portalı Microsoft Edge

  • Formu doldurun ve Uygulama Kimliği Oluştur düğmesine dokunun.

    Yeni Uygulama Kimliği formu oluşturma

  • Yeni Uygulama kartında Ürün Ekle'yi seçin. Facebook Oturum Açma kartında Ayarla'ya tıklayın

    Ürün Kurulumu sayfası

  • Hızlı Başlangıç sihirbazı, ilk sayfa olarak Bir Platform Seçin seçeneğiyle başlatıyor. Sol altta yer alan menüde FaceBook Oturum Ayarlar bağlantısına tıklayarak sihirbazı şimdilik atla:

    Atla hızlı başlangıç

  • İstemci OAuth kimlik doğrulaması sayfası Ayarlar görüntülenir:

    İstemci OAuth Ayarlar sayfası

  • Geçerli OAuth Yeniden Yönlendirme URI'leri alanına /signin-facebook ekli geliştirme URI'nizi girin (örneğin: https://localhost:44320/signin-facebook ). Bu öğreticinin devamlarında yapılandırılan Facebook kimlik doğrulaması, OAuth akışını uygulamak için /signin-facebook rotası üzerinden istekleri otomatik olarak işletir.

Not

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

  • Değişiklikleri Kaydet’e tıklayın.

  • Sol Ayarlar > Temel bağlantısına tıklayın.

    Bu sayfada, ve 'nizi not App ID App Secret edin. Her ikisini de sonraki bölümde ASP.NET Core uygulamanıza ekleyebilirsiniz:

  • Siteyi dağıtırken Facebook Oturum Açma kurulum sayfasını yeniden ziyaret edin ve yeni bir genel URI'yi kaydetmeniz gerekir.

Facebook uygulama kimliğini ve gizli kimliğini depolama

Gizli Numara Yöneticisi ile Facebook uygulama 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:Facebook:AppId Authentication:Facebook:AppSecret depolar:

    dotnet user-secrets set "Authentication:Facebook:AppId" "<app-id>"
    dotnet user-secrets set "Authentication:Facebook:AppSecret" "<app-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 :

Facebook Kimlik Doğrulamasını Yapılandırma

ConfigureServices Startup.cs dosyasındaki yöntemine Facebook hizmetini ekleyin:

services.AddAuthentication().AddFacebook(facebookOptions =>
{
    facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
    facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});

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. AddAuthenticationDaha önce yapılandırılmış 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.

Facebook ile oturum açma

  • Uygulamayı çalıştırın ve Oturum aç'ı seçin.
  • Oturum açmak için başka bir hizmet kullanın. altında Facebook'u seçin.
  • Kimlik doğrulaması için Facebook'a yeniden yönlendirildisiniz.
  • Facebook kimlik bilgilerinizi girin.
  • E-postanızı ayaryabilirsiniz.

Artık Facebook kimlik bilgilerinizi kullanarak oturum açtınız:

React oturum açma yetkisini iptal etmek için

AccessDeniedPath , kullanıcı istenen yetkilendirme talebini onaylamazsa kullanıcı aracısı için bir yeniden yönlendirme yolu sağlar.

Aşağıdaki kod olarak AccessDeniedPath "/AccessDeniedPathInfo" ayarlar:

services.AddAuthentication().AddFacebook(options =>
{
    options.AppId = Configuration["Authentication:Facebook:AppId"];
    options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
    options.AccessDeniedPath = "/AccessDeniedPathInfo";
});

Sayfanın aşağıdaki AccessDeniedPath bilgileri içermesi önerilir:

  • Uzaktan kimlik doğrulaması iptal edildi.
  • Bu uygulama kimlik doğrulaması gerektirir.
  • Yeniden oturum açmayı denemek için Oturum aç bağlantısını seçin.

AccessDeniedPath'i Test Etmek

  • Facebook.com
  • Oturum açmadıysanız, oturum açmanız gerekir.
  • Uygulamayı çalıştırın ve Facebook oturum açma seçeneğini seçin.
  • Şimdi değil'i seçin. Belirtilen sayfaya yeniden AccessDeniedPath yönlendiriliyoruz.

İ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 => { ... });

Facebook kimlik doğrulaması tarafından desteklenen yapılandırma seçenekleri hakkında daha fazla bilgi için bkz. FacebookOptions API başvurusu. Yapılandırma seçenekleri şunları yapmak için kullanılabilir:

  • Kullanıcı hakkında farklı bilgiler talep edin.
  • Oturum açma deneyimini özelleştirmek için sorgu dizesi bağımsız değişkenleri ekleyin.

Sorun giderme

  • ASP.NET Core 2.x: içinde çağrısıyla yapılandırılmamışsa, kimlik doğrulaması yapmaya çalışıldığında Identity services.AddIdentity ConfigureServices ArgumentException: '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 dokunun ve hatayı geçe devam etmek için yenileyin.

Sonraki adımlar

  • Bu makalede Facebook 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.

  • Web sitenizi Azure web uygulamasında yayımlasanız, Facebook geliştirici AppSecret portalında 'i sıfırlamanız gerekir.

  • uygulama ayarlarında Authentication:Facebook:AppId Authentication:Facebook:AppSecret ve uygulama ayarlarını Azure portal. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okumak için ayarlanır.