auth0-aspnetcore-api – ASP.NET Core API 身份认证 Skill

3周前更新 8 0 0 0

auth0-aspnetcore-api 是指导 AI Agent 在 ASP.NET Core Web API 中集成 Auth0 身份验证与授权的开发型 Skill,适合为受保护的接口配置 JWT Bearer 令牌校验、权限范围和访问控制。

Skill 安装

多 Agent 安装
npx skills add https://github.com/auth0/agent-skills --skill auth0-aspnetcore-api

使用 npx skills 快速安装,支持将 Skill 添加到多个兼容的 AI Agent。

Skill 调研报告

Skill 详细介绍

auth0/agent-skills#auth0-aspnetcore-api 是 Auth0 官方 agent-skills 仓库中的一个 Skill,Skill 名称为 auth0-aspnetcore-api。它面向 ASP.NET Core Web API 场景,用 Auth0 官方推荐的方式帮助开发者为 .NET API 添加 OAuth 2.0 / OpenID Connect 身份认证与授权能力。

它不是一个可以独立运行的程序,也不是一个 NuGet 包或 SDK,而是一套面向 AI Agent 的指令集 / 开发指南。安装到支持 Skill 的 Agent 之后,Agent 在处理 ASP.NET Core API 鉴权相关任务时,会按照 Auth0 官方推荐的做法来生成代码、解释配置和排查问题。

核心用途

  • 在 ASP.NET Core Web API 项目中接入 Auth0 作为身份提供方
  • 配置 JWT Bearer 认证,验证 Auth0 签发的 Access Token
  • 在 Program.cs 中正确注册认证、授权中间件与策略
  • 配置 Auth0 Application、API(Audience)以及所需 Scope 与 Permission
  • 在 Controller / Minimal API 中按 Scope 或 Permission 限制访问
  • 处理常见鉴权错误,例如 401、403、Audience 不匹配、Issuer 错误、签名校验失败

它不是什么

  • 不是 Auth0 的替代实现,不负责签发 Token
  • 不是通用 ASP.NET Core 教程,重点聚焦 Auth0 + API 鉴权这一条主线
  • 不涵盖 SPA / MVC / Blazor 等前端或服务端渲染场景(这些通常在 agent-skills 仓库的其他 Skill 中处理)

典型使用场景

  • 新建一个需要 JWT 鉴权的 ASP.NET Core Web API
  • 给已有 API 加上 Auth0 认证,替换或补充原有鉴权方案
  • 配置基于 Permission / Scope 的细粒度授权
  • 排查 Token 校验失败、Scope 不生效、CORS 与鉴权冲突等问题

适合与不适合

适合:使用 .NET / ASP.NET Core,并且打算用 Auth0 作为身份提供方的后端开发者。

不适合:不使用 Auth0 的项目;纯前端鉴权场景;非 .NET 技术栈。

Skill 安全评估

总体判断:该 Skill 来自 Auth0 官方 GitHub 组织(auth0)下的 agent-skills 仓库,来源可信度较高;它本身以指令和代码建议为主,不涉及自动执行远程脚本,正常使用下风险较低。但涉及身份认证,仍需要关注凭证与配置安全。

与安全相关的实际接触面

  • 来源可信度:属于官方组织仓库,属于 Auth0 官方维护的 Agent Skill 集合,供应链风险相对可控。
  • 文件读写:Agent 在执行任务时通常需要读取并修改项目文件,例如 Program.cs、appsettings.json、.csproj。建议在 Git 版本控制下操作,便于回退。
  • Shell / 构建命令:可能需要运行 dotnet build、dotnet run 等命令来验证改动。如果只需要代码建议,可以关闭 Agent 的自动执行 Shell 权限,由开发者手动执行。
  • 凭证类信息:配置中会涉及 Auth0 的 Domain、ClientId、ClientSecret、Audience 等。ClientSecret 属于敏感信息,不应提交到代码仓库。官方推荐做法是使用用户机密(User Secrets)、环境变量或密钥管理服务,Agent 生成的代码通常会遵循这一做法。
  • 网络访问:Auth0 是境外身份服务,运行时 Token 校验需要访问 Auth0 的 JWKS / Issuer 端点,属于正常鉴权流程所需,不是 Skill 本身额外引入的隐藏网络行为。

降低风险的建议

  • 不要把 ClientSecret 写进 appsettings.json 并提交到仓库,改用 User Secrets 或环境变量。
  • 如果只需要让 Agent 生成配置和代码片段,可关闭自动执行命令,自己手动运行 dotnet 命令。
  • 在 Git 分支上让 Agent 修改,提交前 review diff,确认没有把密钥、调试用宽松配置带进项目。
  • 鉴权策略建议遵循最小权限原则,仅授予 API 需要的 Scope,不要用通配符放宽。

Skill 使用要求

一、Agent / 客户端

该 Skill 属于 Auth0 官方 agent-skills 集合,主要面向支持 Skills 机制的 AI Agent 使用,通常以 Claude Code 或类似支持 Skill 加载的客户端为首选环境。官方没有公布完整的第三方 Agent 兼容列表,但从 Agent Skill 的工作方式来看,在支持 Skills 或自定义指令加载的 Codex、Cursor、Trae、OpenClaw、WorkBuddy 等环境中,通常也可以尝试使用,具体加载方式和兼容程度以对应 Agent 当前版本为准。

二、运行环境 / 依赖

项目 要求
Agent 支持 Skills 的 AI Agent(Claude Code 等优先)
.NET SDK ASP.NET Core 项目需要,用于构建和运行验证
Auth0 账号 需要一个 Auth0 Tenant,用于配置 API 与 Application
网络 运行时需能访问 Auth0 相关端点

三、权限

  • 文件读取:必需,用于读取项目文件与配置
  • 文件写入:建议,用于修改 Program.cs、配置文件等
  • Shell:可选,用于 dotnet 构建与运行验证
  • 网络:可选 / 视任务而定,Agent 查询官方文档时会用到;应用运行阶段鉴权本身依赖网络

四、账号 / API Key

Skill 本身不需要 API Key。但要让生成的 API 真正跑起来并完成鉴权,需要在 Auth0 侧准备:

  • Auth0 Tenant 的 Domain
  • 一个注册为 API 的 Application,用于获得 Audience(API Identifier)
  • ClientId / ClientSecret(仅机器对机器场景需要 Secret)
  • 需要在 Auth0 上定义好 Scope / Permission

最小使用条件

  1. 一个可用的 ASP.NET Core API 项目
  2. 一个可用的 Auth0 Tenant 与已注册的 API
  3. Agent 具备读取 / 修改项目文件的权限
  4. 能访问 Auth0 端点(或用本地测试 Token 验证逻辑)

Skill 安装、使用与卸载教程

一、安装

LemonAIKit 本页面已经提供了该 Skill 对应的安装指令,可以直接复制本页面的 Skill 安装指令,粘贴到对应的 Agent 或终端中执行。

如果不确定自己的 Agent 应该如何安装,可以直接向当前 AI Agent 提问:

如何安装 auth0/agent-skills#auth0-aspnetcore-api?

如何在 Claude Code 中安装 auth0/agent-skills#auth0-aspnetcore-api?

如何在 Cursor 中安装 auth0/agent-skills#auth0-aspnetcore-api?

让 Agent 根据其自身的 Skill 加载与管理机制来指导安装。不同 Agent 的 Skill 存放位置不同,官方未提供统一安装命令时,以对应 Agent 的文档为准。

二、安装后如何使用

安装后,通常不需要特殊触发命令。当你的请求涉及 ASP.NET Core API + Auth0 鉴权时,Agent 会按该 Skill 的指引工作。适合交给它的任务包括:接入 Auth0 认证、配置 JWT Bearer、配置 Scope 授权、排查 401 / 403 等。

用自然语言描述需求即可,示例:

使用 auth0-aspnetcore-api,帮我在这个 ASP.NET Core Web API 项目里接入 Auth0 的 JWT 鉴权。

使用 auth0-aspnetcore-api,帮我把已有的 API 改成按 Auth0 Permission 做授权,只允许拥有 read:items 权限的 Token 访问 GET 接口。

使用 auth0-aspnetcore-api,帮我排查一下为什么我已经带上 Token 了,接口仍然返回 401。

三、卸载

不同 Agent 的 Skill 安装位置和管理方式可能不同。通常可以:

  • 使用对应 Agent / Skill 管理器提供的删除方式移除该 Skill
  • 直接删除对应的 Skill 目录或文件
  • 直接询问当前 Agent:“如何卸载 auth0/agent-skills#auth0-aspnetcore-api?”

如果没有统一的卸载命令,让 Agent 根据其自身机制给出移除步骤通常更稳妥。

常见问题

Q:这个 Skill 会直接帮我改代码吗?
在具备文件写入权限的 Agent 中,它通常会直接修改 Program.cs、配置文件等。建议在 Git 分支上操作,提交前 review diff。

Q:必须使用 Auth0 吗?
是的。它专门面向 Auth0 作为身份提供方的场景。如果你的项目使用其他身份服务(如 Azure AD、Keycloak、自建 OIDC),此 Skill 的指导不会直接套用。

Q:中国大陆使用会不会有网络问题?
Auth0 是境外身份服务。开发和运行阶段访问 Auth0 端点(Token 签发、JWKS 校验)可能受网络环境影响,具体连通性视部署环境而定。这是 Auth0 服务本身的特性,不是 Skill 引入的额外要求。

Q:Skill 更新后需要重新安装吗?
取决于 Agent 的 Skill 管理方式。如果 Agent 是从仓库拉取并缓存,可能需要重新拉取或更新;如果是本地副本,需要手动同步。直接询问当前 Agent 如何更新通常最准确。

Q:为什么安装后 Agent 没有识别到这个 Skill?
常见原因包括:Skill 目录位置不符合当前 Agent 约定、未重启 / 重新加载 Agent、Skill 名称被识别为其他同名项目。可以询问 Agent 如何验证 Skill 是否已加载。

Q:可以同时装到多个 Agent 里吗?
一般可以,每个 Agent 各自管理自己的 Skill 目录。具体是否冲突取决于各 Agent 的实现。

Q:可以让 Agent 只给建议、不自动执行命令吗?
可以。关闭 Agent 的自动执行 Shell 权限,让 Agent 只输出代码和配置,由你手动执行 dotnet 命令来验证即可。

Skill 更新日志

版本列表
v2.2.0 最新
## 新内容 **MFA** - 在 12 个 SDK 中实现完整的跨平台 MFA 覆盖(#187、#191、#195) **新增 SDK 参考** - Kotlin Multiplatform(KMP)SDK 支持(#188) - Flutter Windows 桌面端(#192) - Node Auth0 SDK 参考(#194) **迁移** - node-auth0 → auth0-auth-js/server-js 迁移指南,包含脚本和评估(#200) **修复** - 修复了 OpenAI 插件提交错误(#193)
v2.1.0
## v2.1.0 新内容 **新功能** - Vercel 集成参考(#172) - Universal Portals 指南(#171) - 租户健康检查,提供感知套餐的双评分报告 - 租户安全审计,带门控修复(#141) - Codex 插件打包(#167) - 在技能描述中添加了激活评估层 **修复** - 修复了 Swift、Android、Express、Nuxt 和 iOS 参考中的凭据安全问题
v2.0.0
## 新内容 **架构** - 将 44 个以上技能整合为一个统一的 Auth0 技能 - 将 DPoP 和 ACUL 屏幕生成器并入统一技能 - 添加了 Flask/FastAPI 检测和迁移文档 **评估与 CI** - 添加了路由评估 - 在 CI 中强制执行路由可达性检查器 - 强制执行无死链 - 将行为评估框架整合为一个
v1.1.0
## v1.1.0 新内容 **新增框架参考** - React Ionic Capacitor 快速入门(#61) - Vue Ionic Capacitor 快速入门(#63) - Angular Ionic Capacitor 快速入门(#68) - 用于 API 验证的 Go JWT 中间件(#37) - Auth0 CLI 技能(#56) - 品牌和自定义域名技能(#83) **修复** - 在 CLI 示例中使用环境变量而非字面量密钥(#85) - 修正 SPA/原生应用的 token_endpoint_auth_method(#89) - 简化 Expo 手动设置说明(#86) - 从文档示例中移除令牌日志记录(#76)

暂无评论

none
暂无评论...