В моем приложении ASP.NET Core 3 я хотел бы реализовать вход в систему с помощью Google и разрешить аутентификацию только для определенных пользователей.
До сих пор я следовал руководству из:
https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/social-without-identity?view=aspnetcore-3.0 https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins?view=aspnetcore-3.0
Каковы дальнейшие действия, чтобы сделать пользователя авторизованным только для определенных учетных записей Google? Даже если пользователь успешно прошел проверку подлинности в Google, я хочу, чтобы только определенные учетные записи Google (адреса электронной почты) имели доступ к моему приложению ASP.NET Core.
Я пытался назначить делегата дляСобытие OnCreatingEvent, но я не знаю, как отклонить авторизацию.
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = GoogleDefaults.AuthenticationScheme;
})
.AddCookie()
.AddGoogle(options =>
{
options.ClientId = Configuration["google-credentials:ClientId"];
options.ClientSecret = Configuration["google-credentials:ClientSecret"];
options.Events = new OAuthEvents()
{
OnCreatingTicket = HandleOnCreatingTicket
};
});
private async Task HandleOnCreatingTicket(OAuthCreatingTicketContext context)
{
var user = context.Identity;
if (user.Claims.FirstOrDefault(m => m.Type == ClaimTypes.Email).Value != "MY ACCOUNT")
{
// How to reject authorization?
}
await Task.CompletedTask;
}