ASP.NET Core面试精讲系列七

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

内容提要

身份验证确认用户身份,授权判断权限。ASP.NET Core Identity 提供用户管理功能,支持 JWT、角色和策略授权,声明和 Cookie 认证,外部登录和双因素认证。可自定义授权策略,确保安全性与灵活性。

🎯

关键要点

  • 身份验证用于确认用户身份,授权用于判断用户权限。
  • ASP.NET Core Identity 提供用户管理功能,包括注册、登录、角色、声明、令牌与双因素认证。
  • JWT 是一种轻量级的无状态身份验证令牌格式,支持基于令牌的访问控制。
  • 角色授权通过角色控制访问权限,策略授权通过自定义策略和声明实现灵活控制。
  • 声明表示用户的属性或权限,增强认证系统的灵活性。
  • Cookie 认证用于传统 MVC 应用,实现基于会话的登录机制。
  • ASP.NET Core 支持通过内置提供程序集成第三方登录,如 Google、Facebook 等。
  • 刷新令牌用于在 JWT 过期后获取新的访问令牌,需自行实现机制。
  • JWT 通常有效期为 5-30 分钟,过期后失效,吊销通过维护黑名单实现。
  • 使用 [Authorize] 和 [AllowAnonymous] 特性保护路由,控制访问权限。
  • 自定义授权策略与处理程序可实现基于业务规则的精细化授权。
  • ASP.NET Core 内置 Data Protection API 用于加密身份验证 Cookie 和保护敏感令牌。
  • 多租户身份验证支持独立数据库和自定义角色与策略,结合 IdentityServer4 或 Azure AD B2C 实现联合认证。
  • ASP.NET Core Identity 默认使用 PBKDF2 进行密码哈希,建议不存储明文密码。
  • 双因素认证支持多种方式,如短信、邮件和身份验证器应用,增强安全性。

延伸问答

ASP.NET Core Identity 提供哪些用户管理功能?

ASP.NET Core Identity 提供注册、登录、角色管理、声明、令牌与双因素认证等用户管理功能。

JWT 是什么,它的作用是什么?

JWT(JSON Web Token)是一种轻量级的无状态身份验证令牌格式,用于基于令牌的访问控制。

如何实现基于角色的授权?

基于角色的授权通过使用 [Authorize(Roles = "角色名")] 特性来控制访问权限。

ASP.NET Core 如何支持外部登录?

ASP.NET Core 支持通过内置提供程序集成第三方登录,如 Google、Facebook 等,使用 AddAuthentication() 方法进行配置。

什么是双因素认证,它如何增强安全性?

双因素认证(2FA)通过要求用户提供额外的验证方式(如短信、邮件或身份验证器应用)来增强安全性。

如何自定义授权策略?

自定义授权策略通过定义 Requirement 和 Handler,并在服务中注册策略来实现,例如使用 AddPolicy 方法。

➡️

继续阅读