Aracılığıyla paylaş


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

Yayınlayanlar Valeriy Novytskyy ve Rick Anderson

Kod örnekleri içeren bu öğreticide, kullanıcılarınızın önceki sayfada oluşturulan bir örnek ASP.NET Core projesi kullanarak Facebook hesaplarıyla oturum açmasına nasıl izin verileceği gösterilmektedir.

Uygulamayı Facebook'ta oluşturma

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

  • Facebook App Registration yönergelerini izleyerek bir Facebook uygulaması oluşturun ve Uygulama Kimliği ile Uygulama Gizli Anahtarı edinin.

  • Uygulamanız için Facebook Oturum Açma'yı yapılandırmak için Web için Facebook Oturum Açma yönergelerini izleyin. /signin-facebook eklenmiş şekilde geliştirme URI'nizi Geçerli OAuth Yönlendirme URI'leri'ne ekleyin (örneğin: https://localhost:44320/signin-facebook).

    Bu öğreticinin ilerleyen bölümlerinde yapılandırılan Facebook kimlik doğrulaması, OAuth akışını uygulamak için /signin-facebook yolundaki istekleri otomatik olarak işler.

Uyarı

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

  • Uygulamanız için e-posta iznini etkinleştirmek için Facebook Oturum Açma İzinleri kılavuzunu izleyin. ASP.NET Core Facebook kimlik doğrulama ara yazılımı, varsayılan olarak email kapsamını talep eder. Facebook uygulamanızda e-posta izni etkinleştirilmediyse kimlik doğrulaması başarısız olabilir veya oturum açma sonrasında kullanıcının e-posta adresi eksik olur.

  • Uygulama Kimliğinizi ve Uygulama Gizli Dizinizi not edin. Sonraki bölümde her ikisini de ASP.NET Core uygulamanıza ekleyeceksiniz.

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

Facebook uygulama kimliğini ve gizli anahtarı depola

Gizli Yöneticisi ile Facebook uygulama kimliği ve gizli değerler gibi hassas ayarları depolayın. Bu örnek için aşağıdaki adımları kullanın:

  1. Gizli depolamayı etkinleştirmeyönergelerine göre projeyi gizli depolama için başlatın.

  2. Gizli dizi anahtarları Authentication:Facebook:AppId ve Authentication:Facebook:AppSecretile hassas ayarları yerel gizli dizi deposunda depolayın:

    dotnet user-secrets set "Authentication:Facebook:AppId" "<app-id>"
    dotnet user-secrets set "Authentication:Facebook:AppSecret" "<app-secret>"
    

: ayırıcısı tüm platformlarda ortam değişkeni hiyerarşik anahtarlarla çalışmaz. Örneğin, : ayırıcı Bash tarafından desteklenmez. Çift alt çizgi, __, tüm platformlar tarafından desteklenir ve otomatik olarak iki nokta, :, ile değiştirilir.

Facebook Kimlik Doğrulamayı Yapılandırma

Kimlik doğrulama hizmetini Startup.ConfigureServices'a ekleyin:

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

Kimlik doğrulama hizmetini Program'a ekleyin:

var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
var configuration = builder.Configuration;

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

AddAuthentication(IServiceCollection, String) aşırı yüklemesi DefaultScheme özelliğini ayarlar. AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) aşırı yüklemesi, farklı amaçlarla varsayılan kimlik doğrulama düzenlerini ayarlamak için kullanılabilen kimlik doğrulama seçeneklerini yapılandırmaya olanak tanır. Sonraki AddAuthentication çağrıları, daha önce yapılandırılmış olan AuthenticationOptions özelliklerini geçersiz kılar.

AuthenticationBuilder kimlik doğrulama işleyicisini kaydeden uzantı yöntemleri, kimlik doğrulama düzeni başına yalnızca bir kez çağrılabilir. Şema özelliklerinin, şema adının ve görünen adın yapılandırılmasına olanak tanıyan aşırı yüklemeler vardır.

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'a tıklayın.
  • Kimlik doğrulaması için Facebook'a yönlendirilirsiniz.
  • Facebook kimlik bilgilerinizi girin.
  • E-postanızı ayarlayabileceğiniz sitenize geri yönlendirilirsiniz.

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

Harici oturum açmayı iptal etmek için reaksiyon ver

AccessDeniedPath kullanıcı istenen yetkilendirme talebini onaylamadığında kullanıcı aracısına bir yeniden yönlendirme yolu sağlayabilir.

Aşağıdaki kod AccessDeniedPath'yi "/AccessDeniedPathInfo" olarak 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 bilgileri içermesini öneririz AccessDeniedPath :

  • 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 Et

  • facebook.com adresine git
  • Oturum açtıysanız, oturumu kapatmanız gerekir.
  • Uygulamayı çalıştırın ve Facebook ile oturum açmayı seçin.
  • Şimdi değil'i seçin. Belirtilen AccessDeniedPath sayfaya yönlendirilirsiniz.

İstek bilgilerini ara sunucu veya yük dengeleyici ile iletme

Uygulama bir ara sunucu veya yük dengeleyicinin arkasında dağıtılıyorsa, özgün istek bilgilerinin bazıları istek üst bilgilerinde uygulamaya iletilebilir. Bu bilgiler genellikle güvenli istek düzenini (https), ana bilgisayar ve istemci IP adresini içerir. Uygulamalar, özgün istek bilgilerini bulmak ve kullanmak için bu istek üst bilgilerini otomatik olarak okumaz.

Şema, dış sağlayıcılarla kimlik doğrulama akışını etkileyen bağlantı oluşturmada kullanılır. Güvenli düzenin (https) kaybedilmesi, uygulamanın yanlış güvenli olmayan yeniden yönlendirme URL'leri oluşturmasını sağlar.

özgün istek bilgilerini istek işleme için uygulamanın kullanımına açmak için İletilen Üst Bilgiler Ara Yazılımı'nı kullanın.

Daha fazla bilgi için bkz. ASP.NET Core'u ara sunucular ve yük dengeleyicilerle çalışacak şekilde yapılandırma.

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 isteyin.
  • Oturum açma deneyimini özelleştirmek için sorgu dizesi parametreleri ekleyin.

Sorun giderme

  • Yalnızca ASP.NET Core 2.x:Identity içinde services.AddIdentity çağrılarak yapılandırılmadığındaConfigureServices, kimlik doğrulama girişimi ArgumentException: 'SignInScheme' seçeneği sağlanmalıdır hatasıyla sonuçlanacaktır. Bu öğreticide kullanılan proje şablonu, bunun yapılmasını sağlar.
  • Site veritabanı ilk geçiş uygulanarak oluşturulmadıysa, İstek hatası işlenirken veritabanı işlemi başarısız oldu hatasını alırsınız. Veritabanını oluşturmak için Geçişleri Uygula dokunun ve hatadan sonra devam etmek için yenileyin.
  • Facebook'ta oturum açma sırasında bir hata alırsanız veya oturum açmadan sonra kullanıcının e-posta adresi eksikse, Facebook uygulamanız için e-posta izninin etkinleştirildiğini doğrulayın. Facebook Geliştirici portalında izinleri etkinleştirme hakkında ayrıntılı bilgi için Facebook Oturum Açma İzinleri kılavuzuna bakın.

Sonraki Adımlar

  • Bu makalede, Facebook'ta nasıl kimlik doğrulaması yapabileceğiniz gösterildi. önceki sayfasında listelenen diğer sağlayıcılarla kimlik doğrulaması yapmak için benzer bir yaklaşım izleyebilirsiniz.

  • Web sitenizi Azure web uygulamasına yayımladıktan sonra, Facebook geliştirici portalında AppSecret öğesini sıfırlamanız gerekir.

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

Ek kaynaklar

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