Asp.Net Core Identity API endpoints

💡 原文中文,约5500字,阅读约需13分钟。
📝

内容提要

本文介绍了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已被移除。

🏷️

标签

➡️

继续阅读