Share via


ASP.NET Core ile Microsoft Hesabı dış oturum açma kurulumu

Yayınlayanlar Valeriy Novytskyy ve Rick Anderson

Bu örnek, kullanıcıların önceki sayfada oluşturulan ASP.NET Core 6.0 projesini kullanarak iş, okul veya kişisel Microsoft hesaplarıyla oturum açmasına nasıl olanak tanıyabileceğinizi gösterir.

Uygulamayı Microsoft Geliştirici Portalı'nda oluşturma

Microsoft hesabınız yoksa Oluştur'u seçin. Oturum açtıktan sonra Uygulama kayıtları sayfasına yönlendirilirsiniz:

  • Yeni kayıt'ı seçin
  • Bir Ad girin.
  • Desteklenen hesap türleri için bir seçenek belirleyin.
    • Paket, MicrosoftAccount varsayılan olarak "Herhangi bir kuruluş dizinindeki hesaplar" veya "Herhangi bir kuruluş dizinindeki hesaplar ve Microsoft hesapları" seçenekleri kullanılarak oluşturulan Uygulama Kayıtlarını destekler.
    • Diğer seçenekleri kullanmak için, Microsoft Hesabı kimlik doğrulamasını başlatmak için kullanılan ve üyeleriniMicrosoftAccountOptions, oluşturulduktan sonra Uygulama Kaydı'nın Uç Noktalar sayfasında görüntülenen URL'lere ayarlayın AuthorizationEndpoint (Genel Bakış sayfasında Uç Noktalar'a tıklayarak TokenEndpoint kullanılabilir).
  • Yeniden Yönlendirme URI'si'nin altında, eklemeli /signin-microsoft geliştirme URL'nizi girin. Örneğin, https://localhost:5001/signin-microsoft. Bu örnekte daha sonra yapılandırılan Microsoft kimlik doğrulama düzeni, OAuth akışını uygulamak için yönlendirmedeki /signin-microsoft istekleri otomatik olarak işler.
  • Kaydet'i seçin

İstemci gizli dizisi oluşturma

  • Sol bölmede Sertifikalar ve gizli diziler'i seçin.
  • İstemci gizli dizileri'nin altında Yeni istemci gizli dizisi'ni seçin
    • İstemci gizli dizisi için bir açıklama ekleyin.
    • Ekle düğmesini seçin.
  • İstemci gizli dizileri'nin altında, istemci gizli dizisinin değerini kopyalayın.

URI kesimi /signin-microsoft , Microsoft 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 Microsoft kimlik doğrulama ara yazılımını yapılandırırken varsayılan geri çağırma URI'sini MicrosoftAccountOptions değiştirebilirsiniz.

Microsoft istemci kimliğini ve gizli dizisini depolama

Gizli Dizi Yöneticisi ile Sertifikalar ve gizli diziler sayfasında oluşturduğunuz Uygulama Kaydı ve İstemci Gizli Dizisi'nin Genel Bakış sayfasında bulunan Microsoft Uygulaması (istemci) kimliği 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:Microsoft:ClientSecretile hassas ayarları yerel gizli dizi deposunda depolayınAuthentication:Microsoft:ClientId:

    dotnet user-secrets set "Authentication:Microsoft:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Microsoft:ClientSecret" "<client-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

Microsoft Hesabı Kimlik Doğrulamayı Yapılandırma

Kimlik Doğrulama hizmetini içine Programekleyin:

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

services.AddAuthentication().AddMicrosoftAccount(microsoftOptions =>
    {
        microsoftOptions.ClientId = configuration["Authentication:Microsoft:ClientId"];
        microsoftOptions.ClientSecret = configuration["Authentication:Microsoft:ClientSecret"];
    });

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.

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

Microsoft Hesabı ile oturum açma

  • Uygulamayı çalıştırın ve Oturum aç'ı seçin. Microsoft ile oturum açma seçeneği görüntülenir.
  • Microsoft ile oturum açmak için seçin. Kimlik doğrulaması için Microsoft'a yönlendirilirsiniz. Microsoft Hesabınızla oturum açtıktan sonra, uygulamanın bilgilerinize erişmesine izin vermeniz istenir:
  • Evet'i seçin. E-postanızı ayarlayabileceğiniz web sitesine geri yönlendirilirsiniz.

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

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

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

Sorun giderme

  • Microsoft Hesabı sağlayıcısı sizi bir oturum açma hata sayfasına yönlendirirse, hata başlığı ve açıklama sorgu dizesi parametrelerini doğrudan Uri'deki (hashtag) takip ederek # not edin.

    Hata iletisi Microsoft kimlik doğrulamasıyla ilgili bir sorun olduğunu gösteriyor gibi görünse de, en yaygın neden uygulamanızın Uri'sinin Web platformu için belirtilen Yeniden Yönlendirme URI'lerinden hiçbiriyle eşleşmemesidir.

  • içinde çağrılarak yapılandırılmazsaIdentity, kimlik doğrulaması denenmesi ArgumentException ile sonuçlanır: 'SignInScheme' seçeneği sağlanmalıdır.services.AddIdentityConfigureServices Bu örnekte 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, Microsoft'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 Microsoft Geliştirici Portalı'nda yeni bir istemci gizli dizileri oluşturun.
  • Azure portalında Authentication:Microsoft:ClientId ve'yi Authentication:Microsoft:ClientSecret uygulama olarak ayarlayın. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okuyacak şekilde ayarlanır.

Bu örnek, kullanıcıların önceki sayfada oluşturulan ASP.NET Core 3.0 projesini kullanarak iş, okul veya kişisel Microsoft hesaplarıyla oturum açmasına nasıl olanak tanıyabileceğinizi gösterir.

Uygulamayı Microsoft Geliştirici Portalı'nda oluşturma

Microsoft hesabınız yoksa Oluştur'u seçin. Oturum açtıktan sonra Uygulama kayıtları sayfasına yönlendirilirsiniz:

  • Yeni kayıt'ı seçin
  • Bir Ad girin.
  • Desteklenen hesap türleri için bir seçenek belirleyin.
    • Paket, MicrosoftAccount varsayılan olarak "Herhangi bir kuruluş dizinindeki hesaplar" veya "Herhangi bir kuruluş dizinindeki hesaplar ve Microsoft hesapları" seçenekleri kullanılarak oluşturulan Uygulama Kayıtlarını destekler.
    • Diğer seçenekleri kullanmak için, Microsoft Hesabı kimlik doğrulamasını başlatmak için kullanılan ve üyeleriniMicrosoftAccountOptions, oluşturulduktan sonra Uygulama Kaydı'nın Uç Noktalar sayfasında görüntülenen URL'lere ayarlayın AuthorizationEndpoint (Genel Bakış sayfasında Uç Noktalar'a tıklayarak TokenEndpoint kullanılabilir).
  • Yeniden Yönlendirme URI'si'nin altında, eklemeli /signin-microsoft geliştirme URL'nizi girin. Örneğin, https://localhost:5001/signin-microsoft. Bu örnekte daha sonra yapılandırılan Microsoft kimlik doğrulama düzeni, OAuth akışını uygulamak için yönlendirmedeki /signin-microsoft istekleri otomatik olarak işler.
  • Kaydet'i seçin

İstemci gizli dizisi oluşturma

  • Sol bölmede Sertifikalar ve gizli diziler'i seçin.
  • İstemci gizli dizileri'nin altında Yeni istemci gizli dizisi'ni seçin
    • İstemci gizli dizisi için bir açıklama ekleyin.
    • Ekle düğmesini seçin.
  • İstemci gizli dizileri'nin altında, istemci gizli dizisinin değerini kopyalayın.

URI kesimi /signin-microsoft , Microsoft 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 Microsoft kimlik doğrulama ara yazılımını yapılandırırken varsayılan geri çağırma URI'sini MicrosoftAccountOptions değiştirebilirsiniz.

Microsoft istemci kimliğini ve gizli dizisini depolama

Gizli Dizi Yöneticisi ile Sertifikalar ve gizli diziler sayfasında oluşturduğunuz Uygulama Kaydı ve İstemci Gizli Dizisi'nin Genel Bakış sayfasında bulunan Microsoft Uygulaması (istemci) kimliği 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:Microsoft:ClientSecretile hassas ayarları yerel gizli dizi deposunda depolayınAuthentication:Microsoft:ClientId:

    dotnet user-secrets set "Authentication:Microsoft:ClientId" "<client-id>"
    dotnet user-secrets set "Authentication:Microsoft:ClientSecret" "<client-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

Microsoft Hesabı Kimlik Doğrulamayı Yapılandırma

Microsoft Hesabı hizmetini içine Startup.ConfigureServicesekleyin:

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().AddMicrosoftAccount(microsoftOptions =>
    {
        microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"];
        microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"];
    });
}

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.

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

Microsoft Hesabı ile oturum açma

Uygulamayı çalıştırın ve Oturum aç'ı seçin. Microsoft ile oturum açma seçeneği görüntülenir. Microsoft'u seçtiğinizde kimlik doğrulaması için Microsoft'a yönlendirilirsiniz. Microsoft Hesabınızla oturum açtıktan sonra, uygulamanın bilgilerinize erişmesine izin vermeniz istenir:

Evet'e dokunduğunuzda e-postanızı ayarlayabileceğiniz web sitesine geri yönlendirilirsiniz.

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

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

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

Sorun giderme

  • Microsoft Hesabı sağlayıcısı sizi bir oturum açma hata sayfasına yönlendirirse, hata başlığı ve açıklama sorgu dizesi parametrelerini doğrudan Uri'deki (hashtag) takip ederek # not edin.

    Hata iletisi Microsoft kimlik doğrulamasıyla ilgili bir sorun olduğunu gösteriyor gibi görünse de, en yaygın neden uygulamanızın Uri'sinin Web platformu için belirtilen Yeniden Yönlendirme URI'lerinden hiçbiriyle eşleşmemesidir.

  • içinde çağrılarak yapılandırılmazsaIdentity, kimlik doğrulaması denenmesi ArgumentException ile sonuçlanır: 'SignInScheme' seçeneği sağlanmalıdır.services.AddIdentityConfigureServices Bu örnekte 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, Microsoft'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 Microsoft Geliştirici Portalı'nda yeni bir istemci gizli dizileri oluşturun.
  • Azure portalında Authentication:Microsoft:ClientId ve'yi Authentication:Microsoft:ClientSecret uygulama olarak ayarlayın. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okuyacak şekilde ayarlanır.