Asp.net Core Identity介绍
分类: Asp.net Core认证和授权 ◆ 标签: #Asp.Net core基础 #认证 #.Net ◆ 发布于: 2023-05-27 18:11:10

今天我们学习ASP.netCore认证和授权系列2 Azure Identify 介绍。
我们前面一章讲述了关于一个认证系统中必要的概念以及抽象的方法,您可以通过如下的文章来回顾一下:
大家需要对于几个人概念要非常清晰的理解,这就是认证系统中需要实现的几个动作:
SignIn
Authenticate
Challenge
Forbid
SignOut
Claim
Claim Principal
另外对于ASP.net Core中的Service, Filter, 以及middleware 这些概念也有清晰的了解,如果不清楚这些基本的概念,建议你尽快复习一下这些概念。同时要理解ASP.net Core是通过注册实现了IAhtuenticationService以及启用Authentication中间件进行认证。
ASP.net Core Identify 是ASP.net Core默认对于IAuthenticationService以及这套系统的实现。
那么我们今天来学习一下ASP.netCore Identity的基本介绍和基本使用。ASP.net Core Identify 是以RCL的形式发布的(Razor Component Library) 一个成熟的实现了认证系统的组件。
它提供如下的功能或者组件:
提供了现成的UI组件,帮助使用者实现各种界面,例如注册,登录,密码找回等等。
帮助用户管理用户名,密码,用户配置,角色,token等等信息。
集成第三方账号提供者,例如google等。
提供了方便的代码生成工具,可以工具需要自动生成代码,并修改适应为自己的系统需要。
下面提供一个简单的Step ByStep的教程(所有教程都以dotnet core + VS Code)
1. 生成一个新的Web 系统并使用ASP.net Core Identity
dotnet new webapp --auth Individual -o WebApp3
2. 安装EF Core 迁移工具:
dotnet tool install --global dotnet-ef
生成Identity需要的数据库:
dotnet ef database update
3. 查询生成的数据库:
安装SQL Lite 工具:https://sqlitebrowser.org/
如下图,可以看到Identity会生成如下的数据库表, 下图中是ASP.net Core Identity主要使用到的数据库表以及其机构。
4. 运行该实例:
dotnet run
如下图所示可以显示注册,登录,管理等界面
需要注意的是在ASP.net Core使用dotnet core的命令行工具会自动使用SQLite作为存储的数据库,如果想支持其他的类型的数据库在生成数据库之前可以更改配置文件appsetttings.json中的配置字符串。然后继续使用EF Core的数据库迁移工具来生成。
ASP.net Core Identity的配置
我们前面讲过了ASP.net Core Identity整体上还是通过IAuthenticationServier以及Authentication的中间件来实现的整个认证过程的,因此所有的配置也理所当然在Startup.ConfigureService中完成,如下图:
红线处通过扩展方法AddDefaultIdentity<IdentityUser>来启用IAuthenticationService的实现,然后通过Service的配置方法使用IdentityOptions选项来配置IAuthenticationService.
然后启用中间件:
这里我们需要注意启用中间件的顺序,在启用路由之后,启用终结点以及启用授权之前。
UseRouting -> UseAuthentication -> UseAuthorization -> UseEndpoint
这样的顺序就可以了。
另外我们讲到我们将IAuthenticationService注册为服务,那么在实际的使用中,我们完全可以将该服务通过DI注入,并使用它,同时Identity除了注册了IAuthenticationService, 实际上还有其他几个Manager服务可以使用,例如UserManager, RoleManager, SignManager等等,观察自动生成的代码使用可以看到:
这里可以直接使用UserManger生成一个新的用户。
以上是对于ASP.net Core Identity的基本介绍。
我们很快会深入学习ASP.net Core Identity