用途
该技能用于为 ASP.NET Core MVC、Razor Pages 或 Blazor Server 应用添加基于 Cookie 的登录、登出和用户资料功能,底层使用 Auth0.AspNetCore.Authentication SDK。它面向服务端渲染的 Web 应用,通过 Auth0 Universal Login 完成认证流程。
主要能力
- 安装并配置 Auth0.AspNetCore.Authentication SDK。
- 在 appsettings.json 或用户机密中配置 Auth0 凭据(Domain、ClientId、ClientSecret)。
- 在 Program.cs 中注册 Auth0 Web 应用认证服务。
- 创建登录、登出和用户资料端点(MVC 控制器或 Razor Pages)。
- 在视图中展示用户声明(Claims)和资料信息。
- 在导航栏中根据认证状态显示登录/登出/资料链接。
- 支持 Blazor Server 变体,使用 Razor Pages 作为认证端点,并配置级联认证状态。
使用方式
- 安装 SDK:
dotnet add package Auth0.AspNetCore.Authentication。 - 配置凭据:在 appsettings.json 中添加 Auth0 配置节,或使用
dotnet user-secrets设置 Domain、ClientId、ClientSecret。 - 在 Auth0 仪表板中配置 Allowed Callback URLs、Allowed Logout URLs 和 Allowed Web Origins。
- 在 Program.cs 中调用
AddAuth0WebAppAuthentication注册服务,并确保UseAuthentication()在UseAuthorization()之前。 - 创建 AccountController(MVC)或 Login/Logout Razor Pages(Blazor Server/Razor Pages),实现登录挑战和登出逻辑。
- 创建用户资料视图或组件,展示用户声明。
- 更新导航栏,根据
User.Identity.IsAuthenticated显示相应链接。 - 运行应用并测试登录流程。
适用场景
- ASP.NET Core MVC 应用需要添加 Auth0 登录/登出。
- Razor Pages 应用需要会话式认证。
- Blazor Server 应用需要集成 Auth0 认证。
限制
- 不适用于 ASP.NET Core Web API(应使用 auth0-aspnetcore-api)。
- 不适用于 Blazor WebAssembly(需客户端 OIDC)。
- 不适用于单页应用(应使用 auth0-react、auth0-vue、auth0-angular)。
- 不适用于 Next.js(应使用 auth0-nextjs)。
- 不适用于 Python Web 应用(应使用 auth0-flask 或 Django 快速入门)。
- 需要 .NET 8 或更高版本。
- 需要配置 Auth0 Regular Web Application(非 API)。
- Blazor Server 中登录/登出必须使用 Razor Pages,不能使用 Blazor 组件执行 HTTP 重定向。
- 登出时必须同时调用 Auth0 方案和 Cookie 方案的 SignOutAsync。
- 登录操作不应添加 [Authorize],登出和资料操作需要 [Authorize]。
- Domain 不应包含 https:// 前缀。
- 开发环境应使用 user-secrets 或环境变量存储 ClientSecret,避免提交到源代码管理。