Share via


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 olanak tanıyacakları 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ünden Uygulama Oluştur'u seçin. Uygulama oluştur formu görüntülenir. Facebook for developers portal open in Microsoft Edge

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

    Create a New App ID form

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

    Product Setup page

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

    Skip Quick Start

  • İstemci OAuth Ayarlar sayfası sunulur:

    Client OAuth Settings page

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

Dekont

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

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

  • Sol gezinti bölmesinden Ayarlar> Basic bağlantısını seçin.

  • ve değerlerini App IDApp Secretnot 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 dizisini depolama

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

  1. Gizli depolamayı etkinleştirme başlığındaki yönergelere göre projeyi gizli depolama için başlatın.

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

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

: ayıracı, tüm platformlarda ortam değişkeni hiyerarşik anahtarlarıyla çalışmaz. __, çift alt çizgi:

  • Tüm platformlar tarafından desteklenir. Örneğin : ayıracı Bash tarafından desteklenmez ancak __ desteklenir.
  • Otomatik olarak bir : ile değiştirilir

Facebook Kimlik Doğrulamayı Yapılandırma

Kimlik Doğrulama hizmetini içine Startup.ConfigureServicesekleyin:

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

Kimlik Doğrulama hizmetini içine Programekleyin:

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"];
    });

Aşırı AddAuthentication(IServiceCollection, String) yükleme özelliği ayarlar DefaultScheme . Aşırı AddAuthentication(IServiceCollection, Action<AuthenticationOptions>) yükleme, 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. Önceden yapılandırılmış AuthenticationOptions özellikleri geçersiz kılmak için AddAuthentication sonraki çağrı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. Düzen özelliklerini, düzen adını ve görünen adı yapılandırmaya olanak sağlayan 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:

Yetkilendirilmiş dış oturum açmayı iptal etmek için tepki verme

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

Aşağıdaki kod öğesini AccessDeniedPath olarak "/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 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 gidin
  • Oturum açtıysanız oturumu kapatmanız gerekir.
  • Uygulamayı çalıştırın ve Facebook oturumu aç'ı 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 sunucunun veya yük dengeleyicinin arkasına dağıtılırsa, özgün istek bilgilerinden 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.

Düzen, dış sağlayıcılarla kimlik doğrulaması 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 uygulamaya, istek işleme için kullanılabilir hale getirmek için İletilen Üstbilgiler 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.

Çoklu kimlik doğrulaması sağlayıcıları

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

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 isteyin.
  • Oturum açma deneyimini özelleştirmek için sorgu dizesi bağımsız değişkenleri ekleyin.

Sorun giderme

  • yalnızca Core 2.x ASP.NET: içinde çağrılarak ConfigureServicesservices.AddIdentity yapılandırılmazsaIdentity, kimlik doğrulaması denenmesi ArgumentException ile sonuçlanır: 'SignInScheme' seçeneği sağlanmalıdır. Bu öğreticide kullanılan proje şablonu, bunun yapılmasını sağlar.
  • Site veritabanı ilk geçiş uygulanarak oluşturulmadıysa, istek hatası işlenirken veritabanı işlemi başarısız oldu iletisini alırsınız. Veritabanını oluşturmak için Geçişleri Uygula'ya 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 sayfada listelenen diğer sağlayıcılarla kimlik doğrulaması yapmak için benzer bir yaklaşım izleyebilirsiniz.

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

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