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.AspNetCore.Authentication.MicrosoftAccount NuGet paketini projeye ekleyin.
- Azure portalı - Uygulama kayıtları sayfasına gidin ve bir Microsoft hesabı oluşturun veya oturum açın:
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 üyelerini
MicrosoftAccountOptions
, oluşturulduktan sonra Uygulama Kaydı'nın Uç Noktalar sayfasında görüntülenen URL'lere ayarlayınAuthorizationEndpoint
(Genel Bakış sayfasında Uç Noktalar'a tıklayarakTokenEndpoint
kullanılabilir).
- Paket,
- 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:
Gizli depolamayı etkinleştirme başlığındaki yönergelere göre projeyi gizli depolama için başlatın.
Gizli dizi anahtarları ve
Authentication:Microsoft:ClientSecret
ile 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 Program
ekleyin:
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.AddIdentity
ConfigureServices
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'yiAuthentication: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.AspNetCore.Authentication.MicrosoftAccount NuGet paketini projeye ekleyin.
- Azure portalı - Uygulama kayıtları sayfasına gidin ve bir Microsoft hesabı oluşturun veya oturum açın:
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 üyelerini
MicrosoftAccountOptions
, oluşturulduktan sonra Uygulama Kaydı'nın Uç Noktalar sayfasında görüntülenen URL'lere ayarlayınAuthorizationEndpoint
(Genel Bakış sayfasında Uç Noktalar'a tıklayarakTokenEndpoint
kullanılabilir).
- Paket,
- 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:
Gizli depolamayı etkinleştirme başlığındaki yönergelere göre projeyi gizli depolama için başlatın.
Gizli dizi anahtarları ve
Authentication:Microsoft:ClientSecret
ile 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.ConfigureServices
ekleyin:
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.AddIdentity
ConfigureServices
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'yiAuthentication:Microsoft:ClientSecret
uygulama olarak ayarlayın. Yapılandırma sistemi, ortam değişkenlerinden anahtarları okuyacak şekilde ayarlanır.
ASP.NET Core