SuperAPI AI 工具集

auth0-aspnetcore-authentication

安全与审计

查看项目

更新于 10-15 17:47

技能介绍

用途

该技能用于为 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 作为认证端点,并配置级联认证状态。

使用方式

  1. 安装 SDK:dotnet add package Auth0.AspNetCore.Authentication。
  2. 配置凭据:在 appsettings.json 中添加 Auth0 配置节,或使用 dotnet user-secrets 设置 Domain、ClientId、ClientSecret。
  3. 在 Auth0 仪表板中配置 Allowed Callback URLs、Allowed Logout URLs 和 Allowed Web Origins。
  4. 在 Program.cs 中调用 AddAuth0WebAppAuthentication 注册服务,并确保 UseAuthentication() 在 UseAuthorization() 之前。
  5. 创建 AccountController(MVC)或 Login/Logout Razor Pages(Blazor Server/Razor Pages),实现登录挑战和登出逻辑。
  6. 创建用户资料视图或组件,展示用户声明。
  7. 更新导航栏,根据 User.Identity.IsAuthenticated 显示相应链接。
  8. 运行应用并测试登录流程。

适用场景

  • 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,避免提交到源代码管理。