Asp.Net Core Identity API endpoints
内容提要
本文介绍了Asp.Net Core Identity的使用和Identity API endpoints的概念,以及如何将其添加到Asp.Net Core应用程序中并进行配置和授权。文章还提供了一个GitHub地址供参考。
延伸解读
Identity API 端点解决了什么痛点
传统 ASP.NET Core Identity 提供默认 Razor Pages UI,但样式定制困难,且难以与 SPA 或移动应用集成。Identity API 端点将身份功能暴露为最小 API,允许开发者自由构建 UI,并通过令牌支持移动端和 SPA 的认证需求,避免了 Cookie 在移动端管理的复杂性。
核心配置步骤与关键方法
添加 Identity API 端点需先配置 EF Core 和 Identity 服务。关键步骤包括:创建自定义用户类(如 AppUser)并继承 IdentityUser,使 DbContext 继承 IdentityDbContext<AppUser>,然后调用 AddIdentityApiEndpoints<AppUser>() 并链式调用 AddEntityFrameworkStores<AppDbContext>()。最后通过 MapIdentityApi<AppUser>() 映射端点。
端点路径自定义与测试要点
默认 Identity 端点路径为 /register、/login 等,可通过 MapGroup 添加前缀,如 app.MapGroup("/account").MapIdentityApi<AppUser>() 将路径变为 /account/register。测试时需注意密码必须满足 IdentityOptions 的复杂度要求,注册后通过 /login 获取 access_token,再调用受保护 API。
工具选择与版本注意事项
在 .NET 8 中可使用 SwaggerUI 与 Identity API 交互,但 .NET 9 已移除 Swagger,推荐使用 Visual Studio 内置的 .http 文件处理器。此外,AddIdentityApiEndpoints 会自动配置 Bearer 和 Cookie 认证,并添加令牌提供程序等必要服务,简化了集成工作。
Q&A
ASP.NET Core Identity的主要功能是什么?
ASP.NET Core Identity主要用于管理用户账户,提供存储用户账户、管理用户详细信息、启用双因素认证和第三方登录等功能。
如何在ASP.NET Core应用中添加Identity API?
可以通过使用AddIdentityApiEndpoints方法添加Identity服务,并配置EF Core和Identity存储来实现。
Identity API endpoints解决了哪些问题?
Identity API endpoints解决了UI自定义和移动应用访问令牌的问题,使得创建自定义UI变得更容易,并支持为SPA或移动应用颁发访问令牌。
如何创建自定义用户类以支持Identity?
可以通过创建一个从IdentityUser派生的类,并在DbContext中使用IdentityDbContext来实现自定义用户类。
如何保护API以确保只有授权用户可以访问?
可以通过在API端点上添加[Authorize]特性来保护API,确保只有经过授权的用户可以访问。
如何使用SwaggerUI与Identity API交互?
可以通过SwaggerUI与API交互,但在.NET 9中推荐使用VS内置的.http处理器,因为Swagger已被移除。