用途
该项目用于在 Blazor 应用中实现身份验证与授权,覆盖 ASP.NET Core Identity、Microsoft Entra ID(Azure AD)、JWT 以及基于策略的授权等常见场景,供开发者在搭建登录、角色控制、声明校验与 API 保护时参考。
主要能力
- ASP.NET Core Identity 配置:提供 Program.cs 示例,展示 AddAuthentication 搭配 IdentityConstants.ApplicationScheme 与 AddIdentityCookies、AddAuthorizationBuilder 添加策略(如 AdminOnly 要求 Admin 角色、PremiumUser 要求 subscription 声明为 premium),以及 AddIdentityCore 的密码规则(RequireDigit、RequiredLength=8)、RequireConfirmedEmail、AddRoles、AddEntityFrameworkStores、AddSignInManager、AddDefaultTokenProviders 等。
- Microsoft Entra ID(Azure AD)接入:示例使用 OpenIdConnectDefaults.AuthenticationScheme 与 AddMicrosoftIdentityWebApp 读取 AzureAd 配置节,并通过 AddMicrosoftIdentityUI 集成控制器与视图;同时给出 appsettings.json 中 Instance、TenantId、ClientId、CallbackPath(/signin-oidc)的配置结构。
- Blazor 授权组件:展示用 @attribute [Authorize(Roles = "Admin")] 为页面要求身份验证;用 AuthorizeView 的 Authorized/NotAuthorized 分支按登录状态渲染,支持 Roles="Admin,Manager" 的角色化内容和 Policy="PremiumUser" 的策略化内容。
- 编程式鉴权检查:注入 AuthenticationStateProvider,通过 GetAuthenticationStateAsync 获取用户,检查 IsAuthenticated、Name、IsInRole("Admin") 以及 FindFirst(ClaimTypes.Email)。
- JWT Bearer 用于 API:示例配置 AddJwtBearer 的 TokenValidationParameters,包含 ValidateIssuer、ValidateAudience、ValidateLifetime、ValidateIssuerSigningKey,以及 ValidIssuer、ValidAudience、IssuerSigningKey(基于 SymmetricSecurityKey 与配置中的 Jwt:Key)。
- 安全最佳实践:列出在开发环境使用 User Secrets、生产环境使用 Azure Key Vault 存储密钥;使用 HTTPS(app.UseHsts());为表单启用防伪令牌(<AntiforgeryToken />);在页面/终结点使用 [Authorize] 而非仅隐藏 UI;为 API 项目正确配置 CORS;使用 Data Protection API 加密敏感数据;对认证端点进行速率限制;记录认证事件用于审计。
使用方式
项目以代码片段形式组织,按主题分段:Identity 设置、Entra ID 接入、Blazor 授权组件、编程式鉴权、JWT Bearer、安全实践。开发者可按需将对应配置放入 Program.cs、appsettings.json 或 Razor 组件中。
适用场景
适用于需要在 Blazor 项目中实现用户登录、角色/声明/策略级别的访问控制、页面与内容的条件渲染,以及为后端 API 校验 JWT 令牌的场景。
限制
资料未提供完整项目结构、依赖包版本、数据库迁移方式、测试方法或部署步骤;使用前需结合自身项目环境补充相应配置。