最新.NET8 身份:注册、登录、电子邮件确认和双因素身份验证 (2FA)
内容提要
本文介绍了.NET 8中简化身份验证和授权的方法,包括登录和注册功能、管理刷新令牌、双因素身份验证等。还提供了详细指导,如使用持有者令牌保护终结点、检索用户信息、电子邮件确认、发送电子邮件确认和配置2FA功能。
延伸解读
持有者令牌并非标准JWT
文章指出,.NET 8 Identity 生成的持有者令牌不是标准的 JSON Web Token(JWT)。这是有意为之,因为内置标识主要面向简单场景,其令牌选项并非要充当功能齐全的身份服务提供商或令牌服务器,而是作为无法使用 Cookie 的客户端的替代方案。因此,在需要与第三方系统集成或要求标准 JWT 的场景中,需谨慎评估此方案的适用性。
电子邮件确认的配置与测试要点
要强制电子邮件确认,需在 AddIdentityCore 中设置 options.SignIn.RequireConfirmedEmail = true,并集成 SendGrid 服务。测试时,注册后确认邮件可能被归入垃圾邮件文件夹,且邮件发送是队列式的,会有几秒钟延迟。点击确认链接后,数据库中的确认状态将更新为 TRUE。此外,Identity 提供了 /resendConfirmationEmail 端点用于重新发送确认邮件。
2FA集成与二维码增强
在 MVC 项目中,可通过 dotnet new mvc -au individual 快速生成包含注册、登录和 2FA 的标识系统。默认的 2FA 设置页面仅支持手动输入代码,但可以集成 qrcode.js 库生成二维码,方便用户扫描添加密钥。具体步骤包括:使用代码生成器生成 EnableAuthenticator 页面,下载 qrcode.js 并创建 qr.js 调用,最后在页面中引用这些脚本。
自定义用户属性与默认设置调整
通过继承 IdentityUser 创建自定义用户类(如 AppUser),可以添加新的属性。添加后需创建新的迁移以更新数据库表,并将代码中所有 IdentityUser 引用替换为 AppUser。此外,可以通过 Configure<IdentityOptions> 调整密码强度、锁定策略和用户名允许字符等默认设置,以满足特定安全需求。
Q&A
.NET 8 如何简化身份验证和授权的配置?
.NET 8 通过最少的设置简化了身份验证和授权的配置,用户只需安装必要的 NuGet 包并注册中间件即可。
如何在 .NET 8 中实现电子邮件确认功能?
在 .NET 8 中,可以通过集成 SendGrid 服务并要求用户在注册时确认电子邮件来实现电子邮件确认功能。
双因素身份验证(2FA)在 .NET 8 中是如何配置的?
在 .NET 8 中,双因素身份验证可以通过配置 MVC 项目并集成 TOTP 进行设置,用户可以通过扫描二维码来完成 2FA 的设置。
如何使用 SendGrid 发送电子邮件?
使用 SendGrid 发送电子邮件需要配置 SendGrid API 密钥,并实现 IEmailSender 接口以发送电子邮件。
在 .NET 8 中如何管理用户信息?
可以通过 ClaimsPrincipal 类来检索当前登录用户的信息,并在控制器中使用 User.Identity 来访问用户信息。
如何重新发送电子邮件确认?
可以通过调用 /resendConfirmationEmail 端点并设置请求体中的用户电子邮件来重新发送电子邮件确认。