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 方法。
➡️