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. Resmi adımları izleyerek bir Facebook Uygulama Kimliği oluşturarak başlıyoruz.

Uygulamayı Facebook'ta oluşturma

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

  • Facebook Geliştiricileri uygulaması sayfasına gidin ve oturum açın. Henüz bir Facebook hesabınız yoksa, bir facebook hesabı oluşturmak için oturum açma sayfasındaki Facebook'a kaydol bağlantısını kullanın. Bir Facebook hesabınız olduğunda, Facebook Geliştiricisi olarak kaydolmak için yönergeleri izleyin.

  • Uygulamalarım menüsünde Uygulama Oluştur'u seçin. Uygulama oluştur formu görüntülenir. Geliştiriciler için Facebook portalı Microsoft Edge'de açıldı

  • Projenize en uygun uygulama türünü seçin. Bu proje için Tüketici'yi ve ardından İleri'yi seçin. Yeni bir Uygulama Kimliği oluşturulur.

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

    Yeni Uygulama Kimliği formu oluşturma

  • Uygulamanıza Ürün Ekle sayfasında Facebook Oturum Açma kartında Ayarla'yı seçin.

    Ürün Kurulumu sayfası

  • Hızlı Başlangıç sihirbazı ilk sayfa olarak Platform Seç seçeneğiyle başlatılır. Sol alttaki menüde FaceBook Oturum AçmaAyarları bağlantısına tıklayarak sihirbazı şimdilik atla:

    Hızlı Başlangıç'ı atla

  • İstemci OAuth Ayarları sayfası gösterilir:

    İstemci OAuth Ayarları sayfası

  • Geçerli OAuth Yeniden Yönlendirme URI'leri alanına /signin-facebook eklenmiş geliştirme URI'nizi girin (ö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, FacebookOptions sınıfının devralınmış RemoteAuthenticationOptions.CallbackPath özelliği aracılığıyla varsayılan geri çağırma URI'sini değiştirebilirsiniz.

  • Değişiklikleri Kaydet'i seçin.

  • Sol gezinti bölmesinde Ayarlar>Temel bağlantısı'nı seçin.

  • App ID ve App Secret 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 etmeniz ve yeni bir genel URI kaydetmeniz gerekir.

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ısı Bashtarafından desteklenmez. Çift alt çizgi, __, şudur:

  • Tüm platformlar tarafından desteklenir.
  • :, otomatik olarak iki nokta üst üste 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:ConfigureServices içinde services.AddIdentity çağrılarak yapılandırılmadığındaIdentity, 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.

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ı