1. Базовые знания идентичности
1.1 Состав идентичности
В ASP.NET Core Identity — это платформа для аутентификации и авторизации пользователей. Он содержит ряд компонентов для управления функциями, связанными с идентификацией, такими как пользователи, роли, утверждения и т. д. Ниже приведены основные компоненты ASP.NET Core Identity:
- Менеджер пользователей:User Менеджер — это основной компонент для управления пользователями. Он обеспечивает создание、удалить、Поиск пользователей и другие операции,И управлять атрибутами пользователей и паролями.
- Ролевой менеджер:Role Менеджер отвечает за управление ролями пользователей, позволяя создавать, удалять, находить роли и добавлять пользователей к ролям.
- Пользователь:Представляет пользователей в приложении。IdentityСтруктура обеспечивает
IdentityUser
Реализация по умолчанию,Вы также можете определить собственных пользователей, унаследовав этот класс. - Роль:Представляет роль в приложении。добрый似于用户,IdentityПлатформа предоставляет значение по умолчанию
IdentityRole
добрый,Вы также можете создавать собственные роли. - Требовать:Оператор представляет собой некоторую атрибутивную информацию о пользователе.,Они имеют форму пар ключ-значение. Например,Оператор может представлять возраст, имя и другую информацию пользователя.
- SignInManager (Менеджер входа в систему):SignInManagerиспользуется для обработки пользователей Авторизоватьсяи Выйти。Он содержит учетные данные для аутентификации пользователя.,Генерация и проверка личности (токены идентификации) и других функций.
- Хэшер паролей:Используется для хеширования паролей пользователей.ипроверять。IdentityФреймворк использует алгоритм хеширования для шифрования паролей.,Улучшите безопасность.
- Поставщики токенов:IdentityПлатформа предоставляет поставщика токенов для генерацииипроверять令牌,Например, для сброса пароля、Подтверждение по электронной почтеи другие функции。
- DbContext (контекст базы данных):Контекст для взаимодействия с базой данных,Содержит таблицы для хранения информации о пользователе, роли и т. д.
- Промежуточное ПО для идентификации:для обработкиHTTPЗапрос Аутентификацияи Авторизовать。IdentityПромежуточное программное обеспечение настраивается при запуске приложения.,И отвечает за управление доступом для аутентификации пользователей.
1.2 Создание и управление идентификационными данными
В ASP.NET Core создание удостоверений и управление ими обычно включает следующие шаги:
Создать АСП.NET Core проект
Сначала вам нужно создать ASP.NET. Основнойпроект. Вы можете использовать визуальный Studio или используйте инструменты командной строки,Выберите шаблон MVC или API,Зависит от типа вашего проекта.
dotnet new mvc -n YourProjectName
Добавить службу идентификации
В проекте необходимо Добавить службу идентификация. Обычно это включает в себя следующие шаги:
Установите пакет удостоверений
Запустите следующую команду в терминале (командной строке) в каталоге проекта:
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCore
Настройка службы идентификации
существоватьStartup.cs
Документальный фильмConfigureServices
в методе,Добавьте следующий код в Настройка службы идентификации:
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
здесь,IdentityUser
是表示用户的добрый,IdentityRole
是表示角色的добрый。ApplicationDbContext
是Контекст для взаимодействия с базой данных。
CreateDbContext
Вам необходимо создатьDbContextвзаимодействовать с базой данных。этотDbContextобычно происходит отIdentityDbContext<TUser, TRole, TKey>
добрый,где TUserиTRole — класс вашей роли пользователя,TKey — это их основной тип ключа.
public class ApplicationDbContext : IdentityDbContext<IdentityUser, IdentityRole, string>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
Миграция базы данных
Выполните следующую команду, чтобы применить миграцию удостоверений. базы данных:
dotnet ef migrations add InitialCreate
dotnet ef database update
Усеидентити
Теперь вы можете Усеидентити в своем приложении. Создание и проверка пользователей, Назначение роли, вы можете использовать ее для выполнения таких операций, как Авторизация UserManager
, SignInManager
и RoleManager
завершить. Вот несколько примеров основных операций:
Создать пользователя
var user = new IdentityUser { UserName = "username", Email = "user@example.com" };
var result = await userManager.CreateAsync(user, "password");
var result = await signInManager.PasswordSignInAsync("username", "password", false,false);
if (result.Succeeded)
{
// Авторизоваться成功
}
Назначение ролей
var user = await userManager.FindByNameAsync("username");
await userManager.AddToRoleAsync(user, "Admin");
Аутентификация и авторизация
你可以使用Authorize
Атрибуты для защиты вашего контроллера или методов действий:
[Authorize(Roles = "Admin")]
public IActionResult AdminPage()
{
// Доступ имеют только пользователи с ролью «Администратор».
return View();
}
Это простое руководство по началу работы,на самом деле,Identity предоставляет больше возможностей,Включает сброс пароля, Подтверждение по электронной почте、Двухфакторная аутентификация и многое другое. Вы можете дополнительно расширять и настраивать функции Identity в соответствии со своими потребностями.
1.3 Процесс проверки личности
Процесс проверки личности ASP.NET Core включает в себя несколько компонентов и шагов. Вот общий процесс аутентификации:
- Вход пользователяпросить:
Когда пользователи пытаются Авторизоваться, они обычно предоставляют имя пользователя (или адрес электронной почты) и пароль.
- Проверьте учетные данные пользователя:
- Identityв
SignInManager
组件会проверять提供的用户名ипароль。 - Если учетные данные действительны,Пользователь будет помечен как прошедший Аутентификацию.
- Сгенерируйте идентификационные токены:
- проходить
SignInManager
Создать идентификатор пользователя(Identity Token)。 - Идентификация содержит информацию о пользователе, такую как идентификатор пользователя, имя пользователя, роль и т. д.
- Создание сертификатов и управление ими Cookie:
- Identity использует файлы cookie для отслеживания пользователей, прошедших Аутентификацию.
- проходить
SignInManager
идентифицировать(Identity Токен) сохраняется в файле cookie, чтобы последующие запросы могли использовать файл cookie для идентификации пользователя.
- Контроль доступа:
- проходить
[Authorize]
атрибуты или другие Аутентификацияфильтр,Контроль доступа можно настроить на уровне контроллера или метода действия. - Промежуточное программное обеспечение Identity проверит наличие файлов cookie в запросе.,Чтобы убедиться, что пользователь прошел Аутентификацию,и может требовать определенных ролей или утверждений.
- Выход:
- Когда пользователь просит выйти из системы,
SignInManager
会Выйти用户并清除相关的Cookie。
Это базовый процесс аутентификации, охватывающий вход пользователя, проверку учетных данных, генерацию личности, управление файлами cookie и контроль доступа. В реальных приложениях также могут использоваться более сложные процессы аутентификации, такие как сброс пароля и двухфакторная аутентификация.
3. Преимущества и проблемы идентичности
3.1 Преимущества идентичности
ASP.NET Core Identity Предоставляет множество преимуществ, которые делают управление авторизацией пользователей в приложении более простым, безопасным и гибким. Вот некоторые ASP.NET Core Identity Основные преимущества:
- Легко интегрировать: Identity Обеспечивает легкую интеграцию в ASP.NET Core Приложение API и инструменты. После небольшой настройки вы можете добавить в свое приложение функцию авторизации Аутентификации.
- Настраиваемость: хотя Identity Предоставляется реализация по умолчанию,Но вы можете настроить его в соответствии со своими потребностями. Вы можете использовать собственные классы пользователей и ролей.,Изменить модель данных по умолчанию,И добавьте пользовательские декларации и т. д.
- Безопасность: Identity 提供了пароль哈希、Механизм токена、Заблокировать аккаунт、Функции безопасности, такие как двухфакторная аутентификация.。пароль哈希保护了用户пароль,и Механизм токенаи Двухфакторная аутентификация расширяет возможности пользователя Аутентификациябезопасность。
- Поддерживает несколько вариантов хранения: Identity Поддерживает несколько серверов хранения данных, в том числе Entity Framework Core, Dapper и другие поставщики специализированных хранилищ. Это означает, что вы можете выбрать решение для хранения, которое подходит именно вам.
- Управление идентификацией: Identity Обеспечивает управление удостоверениями, такими как пользователи, роли, утверждения и т. д. API. проходить
UserManager
и RoleManager
,Вы можете легко выполнять операции по управлению пользователями и ролями. - Сброс пароля и письмо с подтверждением: Identity Предусмотрены функции сброса пароля и подтверждения электронной почты, позволяющие пользователям безопасно сбросить пароль или подтвердить адрес электронной почты.
- Интеграция входа через социальные сети: Identity Поддерживает интеграцию с внешними поставщиками удостоверений (такими как Google, Facebook, Microsoft и т. д.), чтобы пользователи могли проводить авторизацию, используя свои учетные записи в социальных сетях.
- Упрощенный процесс аутентификации: Identity Устраняет множество сложностей в процессе аутентификации, в том числе Cookie Управление, генерация токенов и т. д. Это позволяет разработчикам больше сосредоточиться на бизнес-логике.
- Роль и заявление: Identity Предоставляет концепцию ролей и объявлений.,Упрощает более детальную авторизацию пользователей. Вы можете определить роли,Назначьте пользователей ролям,И используйте объявления, чтобы добавить более детальную авторизацию.
3.2 Возможные проблемы при реализации Identity
Хотя ASP.NET Core Identity предоставляет мощные функции авторизации аутентификации, во время реализации могут возникнуть некоторые проблемы. Вот некоторые возможные проблемы:
- Пользовательская сложность: Глубокое понимание может потребоваться при реализации некоторых конкретных или сложных требований авторизации аутентификации. Identity Внутренняя работа фреймворка,и внести некоторые дополнительные настройки. Это может включать в себя специального поставщика хранилища, Пользовательский. класс пользователя и роли、и другие расширенные конфигурации.
- Миграция базы данных: при использовании Entity Framework Core Выступая в качестве поставщика хранилища, выполните Миграцию. базы данных Может включать изменение нескольких таблиц.。существовать一些情况下,Особенно, когда меняется существующая структура базы данных.,К миграции необходимо подходить осторожно, чтобы предотвратить потерю или несогласованность данных.
- Соображения производительности: По мере увеличения числа пользователей Identity Производительность таблиц базы данных может стать проблемой. Возможно, вы захотите рассмотреть такие стратегии, как индексирование и кэширование базы данных, для повышения производительности.
- Фронтальная интеграция: Хотя Identity Обработана авторизация Аутентификации на серверной части, но реализован Вход на веб-интерфейсе. пользователя、зарегистрироваться、И такие процессы, как сброс пароля, все еще требуют доработки. Интеграция внешнего и внутреннего интерфейса должна учитывать удобство пользователя и безопасность.
- Интеграция входа через социальные сети: Интегрируйте внешних поставщиков удостоверений, таких как Google、Facebook и т. д.) может потребовать некоторой дополнительной настройки и обработки. У разных поставщиков удостоверений могут быть разные требования и ограничения.
- Конфигурация безопасности: Хотя Identity Предусмотрено множество функций безопасности, но правильная настройка по-прежнему имеет решающее значение. Например, настройте политики паролей, двухфакторную аутентификацию и предотвратите распространенные атаки (такие как атаки с использованием межсайтовых сценариев, подделку межсайтовых запросов и т. д.).
- Совместимость версий: В жизненном цикле проекта Айдентика Могут быть выпущены новые версии фреймворка. При обновлении до новой версии вам может потребоваться внести некоторые изменения для обеспечения совместимости.
- Понимание документа: потому что Identity Платформа предоставляет множество функций, и понимание и правильное использование этих функций может потребовать детального прочтения документации и справочных материалов.
4. Резюме
ASP.NET Core Identity — это основа авторизации аутентификации для ASP.NET. Основное приложение. В его состав входят Пользователь Manager、Role Менеджер, Пользователь, Роль, Утверждение и т. д. через SignInManager. пользователяиуправлять。УсеидентитинуждатьсяCreateDbContext、руководить Миграция базы данных и может быть реализован по умолчанию или настроен в соответствии с потребностями проекта. Identity предоставляет такие преимущества, как простая интеграция, широкие возможности настройки, высокий уровень безопасности и поддержка нескольких хранилищ. Возможные проблемы во время внедрения включают сложность настройки, миграцию. базы данные, соображения производительности, интеграция внешнего интерфейса, интеграция авторизации в социальных сетях и т. д., но при правильном понимании конфигурации и документации эти проблемы можно преодолеть. ASP.NET Core Identity предоставляет разработчикам упрощенное и мощное решение для авторизации при аутентификации.