Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tarafından Kirk Larkin ve Rick Anderson
ASP.NET Core'da Facebook ve Google kimlik doğrulaması, kullanıcıların dış kimlik doğrulama sağlayıcılarının kimlik bilgileriyle OAuth 2.0 kullanarak oturum açmasına nasıl olanak tanıyacaklarını açıklar. Bu makalede açıklanan yaklaşım, kimlik doğrulama sağlayıcısı olarak ASP.NET Core Identity içerir.
Bu örnek, ASP.NET Core Identityolmadan bir dış kimlik doğrulama sağlayıcısının nasıl kullanılacağını gösterir. Bu yaklaşım, ASP.NET Core'un Identitytüm özelliklerini gerektirmeyen ancak yine de güvenilen bir dış kimlik doğrulama sağlayıcısıyla tümleştirme gerektiren uygulamalar için kullanışlıdır.
Bu örnek, kullanıcıların kimliğini doğrulamak için Google kimlik doğrulamasını kullanır. Google kimlik doğrulamasının kullanılması, oturum açma işlemini yönetmenin karmaşıklıklarının çoğunu Google'a kaydırıyor. Farklı bir dış kimlik doğrulama sağlayıcısıyla tümleştirmek için aşağıdaki makalelere bakın:
- Facebook kimlik doğrulaması
- Microsoft kimlik doğrulaması
- Twitter kimlik doğrulaması
- Diğer sağlayıcılar
Yapılandırma
içindeProgram.cs
, uygulamanın kimlik doğrulama düzenlerini , AddCookieve AddGoogle yöntemleriyle AddAuthenticationyapılandırın:
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.Google;
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = builder.Configuration["Authentication:Google:ClientId"];
options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"];
});
builder.Services.AddRazorPages();
çağrısı AddAuthentication , uygulamanın DefaultSchemeöğesini ayarlar. DefaultScheme
, aşağıdaki HttpContext
kimlik doğrulama uzantısı yöntemleri tarafından kullanılan varsayılan düzendir:
Uygulamanın DefaultScheme
CookieAuthenticationDefaults.AuthenticationScheme öğesinin ("Tanımlama Bilgileri") olarak ayarlanması, uygulamayı bu uzantı yöntemleri için varsayılan düzen olarak Tanımlama Bilgileri kullanacak şekilde yapılandırmaktadır. Uygulamanın DefaultChallengeScheme GoogleDefaults.AuthenticationScheme ayarının ("Google") olarak ayarlanması, uygulamasına yapılan çağrılar ChallengeAsync
için varsayılan düzen olarak Google'ı kullanacak şekilde yapılandırılır. DefaultChallengeScheme
DefaultScheme
geçersiz kılar. Ayarlandığında geçersiz kılan DefaultScheme
diğer özellikler için bkzAuthenticationOptions.
içinde Program.cs
, çağrısı UseAuthentication ve UseAuthorization. Bu ara yazılım bileşimi özelliği ayarlar HttpContext.User ve istekler için Yetkilendirme Ara Yazılımını çalıştırır:
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAuthentication();
app.UseAuthorization();
app.MapRazorPages();
Kimlik doğrulama düzenleri hakkında daha fazla bilgi edinmek için bkz . Kimlik Doğrulama Kavramları. Kimlik doğrulaması hakkında cookie daha fazla bilgi edinmek için bkz. ASP.NET Core Identityolmadan kimlik doğrulamasını kullanmacookie.
Yetkilendirme uygulama
[Authorize] özniteliğini bir denetleyiciye, eyleme veya sayfaya uygulayarak uygulamanın kimlik doğrulama yapılandırmasını test edin. Aşağıdaki kod, sayfaya Privacy erişimi kimliği doğrulanmış kullanıcılarla sınırlar:
[Authorize]
public class PrivacyModel : PageModel
{
}
Erişim belirtecini kaydetme
SaveTokens , başarılı bir yetkilendirmeden sonra içinde erişim ve yenileme belirteçlerinin depolanıp depolanmayacağını AuthenticationProperties tanımlar. SaveTokens
, son kimlik doğrulamasının cookieboyutunu küçültmek için varsayılan olarak olarak ayarlanırfalse
.
Başarılı bir yetkilendirmeden sonra erişimi kaydetmek ve belirteçleri yenilemek için içinde Program.cs
olarak true
ayarlayınSaveTokens
:
builder.Services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = builder.Configuration["Authentication:Google:ClientId"];
options.ClientSecret = builder.Configuration["Authentication:Google:ClientSecret"];
options.SaveTokens = true;
});
Kaydedilmiş bir belirteci almak için kullanın GetTokenAsync. Aşağıdaki örnek adlı access_token
belirteci alır:
public async Task OnGetAsync()
{
var accessToken = await HttpContext.GetTokenAsync(
GoogleDefaults.AuthenticationScheme, "access_token");
// ...
}
Oturumu kapat
Geçerli kullanıcının oturumunu kapatmak ve kullanıcısını cookiesilmek için öğesini çağırın SignOutAsync. Aşağıdaki kod Dizin sayfasına bir Logout
sayfa işleyicisi ekler:
public class IndexModel : PageModel
{
public async Task<IActionResult> OnPostLogoutAsync()
{
// using Microsoft.AspNetCore.Authentication;
await HttpContext.SignOutAsync();
return RedirectToPage();
}
}
çağrısının SignOutAsync
bir kimlik doğrulama şeması belirtmediğini fark edin. Uygulama DefaultScheme
geri dönüş olarak , CookieAuthenticationDefaults.AuthenticationScheme
, kullanır.
Ek kaynaklar
ASP.NET Core'da Facebook ve Google kimlik doğrulaması, kullanıcıların dış kimlik doğrulama sağlayıcılarının kimlik bilgileriyle OAuth 2.0 kullanarak oturum açmasına nasıl olanak tanıyacaklarını açıklar. Bu makalede açıklanan yaklaşım, kimlik doğrulama sağlayıcısı olarak ASP.NET Core Identity içerir.
Bu örnek, ASP.NET Core Identityolmadan bir dış kimlik doğrulama sağlayıcısının nasıl kullanılacağını gösterir. Bu yaklaşım, ASP.NET Core'un Identitytüm özelliklerini gerektirmeyen ancak yine de güvenilen bir dış kimlik doğrulama sağlayıcısıyla tümleştirme gerektiren uygulamalar için kullanışlıdır.
Bu örnek, kullanıcıların kimliğini doğrulamak için Google kimlik doğrulamasını kullanır. Google kimlik doğrulamasının kullanılması, oturum açma işlemini yönetmenin karmaşıklıklarının çoğunu Google'a kaydırıyor. Farklı bir dış kimlik doğrulama sağlayıcısıyla tümleştirmek için aşağıdaki makalelere bakın:
- Facebook kimlik doğrulaması
- Microsoft kimlik doğrulaması
- Twitter kimlik doğrulaması
- Diğer sağlayıcılar
Yapılandırma
yöntemindeConfigureServices
, uygulamanın kimlik doğrulama düzenlerini , AddCookieve AddGoogle yöntemleriyle AddAuthenticationyapılandırın:
public void ConfigureServices(IServiceCollection services)
{
// requires
// using Microsoft.AspNetCore.Authentication.Cookies;
// using Microsoft.AspNetCore.Authentication.Google;
// NuGet package Microsoft.AspNetCore.Authentication.Google
services
.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = Configuration["Authentication:Google:ClientId"];
options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
});
services.AddRazorPages();
}
çağrısı AddAuthentication , uygulamanın DefaultSchemeöğesini ayarlar. DefaultScheme
, aşağıdaki HttpContext
kimlik doğrulama uzantısı yöntemleri tarafından kullanılan varsayılan düzendir:
Uygulamanın DefaultScheme
CookieAuthenticationDefaults.AuthenticationScheme öğesinin ("Tanımlama Bilgileri") olarak ayarlanması, uygulamayı bu uzantı yöntemleri için varsayılan düzen olarak Tanımlama Bilgileri kullanacak şekilde yapılandırmaktadır. Uygulamanın DefaultChallengeScheme GoogleDefaults.AuthenticationScheme ayarının ("Google") olarak ayarlanması, uygulamasına yapılan çağrılar ChallengeAsync
için varsayılan düzen olarak Google'ı kullanacak şekilde yapılandırılır. DefaultChallengeScheme
DefaultScheme
geçersiz kılar. Ayarlandığında geçersiz kılan DefaultScheme
diğer özellikler için bkzAuthenticationOptions.
içindeStartup.Configure
, çağrısı ve UseAuthorization ile arasında öğesini arayın UseAuthentication UseRouting UseEndpoints. Bu ara yazılım bileşimi özelliği ayarlar HttpContext.User ve istekler için Yetkilendirme Ara Yazılımını çalıştırır:
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
Kimlik doğrulama düzenleri hakkında daha fazla bilgi edinmek için bkz . Kimlik Doğrulama Kavramları. Kimlik doğrulaması hakkında cookie daha fazla bilgi edinmek için bkz. ASP.NET Core Identityolmadan kimlik doğrulamasını kullanmacookie.
Yetkilendirme uygulama
[Authorize] özniteliğini bir denetleyiciye, eyleme veya sayfaya uygulayarak uygulamanın kimlik doğrulama yapılandırmasını test edin. Aşağıdaki kod, sayfaya Privacy erişimi kimliği doğrulanmış kullanıcılarla sınırlar:
[Authorize]
public class PrivacyModel : PageModel
{
}
Oturumu kapat
Geçerli kullanıcının oturumunu kapatmak ve kullanıcısını cookiesilmek için öğesini çağırın SignOutAsync. Aşağıdaki kod Dizin sayfasına bir Logout
sayfa işleyicisi ekler:
public class IndexModel : PageModel
{
public async Task<IActionResult> OnPostLogoutAsync()
{
await HttpContext.SignOutAsync();
return RedirectToPage();
}
}
çağrısının SignOutAsync
bir kimlik doğrulama şeması belirtmediğini fark edin. uygulamasının DefaultScheme
CookieAuthenticationDefaults.AuthenticationScheme
uygulaması geri dönüş olarak kullanılır.
Ek kaynaklar
ASP.NET Core