身份验证与授权Skill:把登录、令牌、权限与 MFA 一次讲透,让认证授权少踩安全坑
- 它是谁:
auth(身份验证与授权Skill)是一个面向现代应用的认证与授权知识型技能,覆盖 OAuth2、JWT、RBAC/ABAC、会话管理、API 密钥、密码哈希与 MFA。 - 解决什么问题:登录流程、令牌生命周期、权限模型、会话存储这些“人人要做、次次踩坑”的事情,不再靠翻文档拼凑,而是让 AI 按最佳实践直接给方案与代码。
- 怎么用:在支持技能(Skill)的 AI 客户端中安装启用后,用
login、JWT、OAuth、RBAC、MFA等触发词唤起即可,无需手动记命令。 - 边界清晰:它专注“设计与实现”,不负责安全漏洞扫描、安全审计、威胁建模——这三类需求请交给
/security-scan、/security-audit、/threat-model。 - 适合谁:需要写登录注册、做权限控制、接单点登录、管 API 密钥、加二次验证的软件工程师与安全架构师。
1. 该技能叫什么?如何下载安装 AI 技能提升开发效率?
基本信息
| 项目 | 内容 |
|---|---|
| 技能中文名 | 身份验证与授权Skill |
| 技能英文名 | auth |
| 技能ID | 13524 |
| 技能类型 | 领域知识与实现指导型技能(认证 / 授权 / 凭证管理) |
| 覆盖范围 | OAuth2、OIDC、JWT、RBAC、ABAC、会话、API 密钥、密码哈希、MFA |
它解决什么问题
认证与授权是几乎所有应用都要面对、但极少有人愿意重复造轮子的模块。实际开发中常见的困境是:授权码流程和 PKCE 到底该用哪个、访问令牌设多长、刷新令牌要不要轮换、密码用 bcrypt 还是 Argon2id、会话存 Redis 还是数据库、权限该用角色还是属性、MFA 备份码怎么存……每个问题都牵连安全边界,一旦答错就是一整片返工。
auth 技能把这些分散的知识点收敛成一套体系:既有概念解释,也有可直接参考的 TypeScript 代码范式,还有一份“上线前必须过一遍”的安全检查清单。它的价值在于把人从“搜索→甄别→试错”的循环里拉出来,直接进入“选型→实现→自查”的流程。
一键安装的思路与步骤
安装的前提是:你使用的 AI 客户端或开发平台支持“技能(Skill)”这一能力形态。具体入口、命令与支持范围请以官方说明为准,本技能不提供也未内置任何独立的安装命令。
- 确认环境:检查常用 AI 编程客户端是否已开放技能市场或技能管理面板(以官方说明为准)。
- 定位技能:在技能检索框中输入中文名「身份验证与授权」、英文名
auth,或直接输入技能ID13524进行查找。 - 一键添加:在技能详情页点击安装 / 启用(不同平台按钮名称略有差异,以官方说明为准),技能会注册到你的技能列表中。
- 确认启用状态:安装完成后,回到技能列表确认
auth处于“已启用”状态;若支持项目级配置,可将其绑定到特定项目。 - 验证是否真的生效:新开一个会话,输入类似「实现一个带刷新令牌轮换的 JWT 登录接口」的问题。如果回答开始使用 OAuth2 / JWT / 会话安全等结构化表述,并给出带安全清单的实现建议,说明技能已生效;如果回答仍是泛泛而谈,检查是否被其他技能抢占或未启用。
触发词速查:login、logout、signin、signup、authentication、authorization、password、token、JWT、OAuth、OAuth2、OIDC、SSO、SAML、session、cookie、refresh token、RBAC、ABAC、permissions、roles、MFA、2FA、TOTP、API key、PKCE、401、403 等。命中任意一个即可唤起技能。
2. 该技能的主要功能和特点
能做什么
- OAuth2 全流程指导:区分授权码流程(服务端应用)、PKCE 流程(SPA 与移动端公共客户端必需)、客户端凭证流程(服务间通信),并给出 state 生成、code 交换、code_verifier 传递等关键代码。
- JWT 签发与校验范式:令牌载荷字段(sub / iss / aud / exp / iat)、RS256 非对称签名、签发与验证的公私钥分工,并强调验证时必须锁定允许的算法。
- 刷新令牌与轮换策略:短生命周期访问令牌 + 长生命周期刷新令牌的分工,刷新令牌落库哈希存储、一次性使用、轮换后作废旧令牌,支持主动撤销。
- RBAC 与 ABAC 双模型:RBAC 用角色到权限的映射加
requirePermission中间件,支持resource:action:scope形式的资源级权限;ABAC 用策略函数按主体、资源、动作、环境四要素组合判断。 - 会话管理落地:基于 Redis 的会话创建、校验、TTL 续期、最后活动时间更新,以及“一键踢下线”——按用户维度批量失效全部会话。
- API 密钥体系:带前缀的密钥便于识别、存储前哈希、作用域与速率限制、过期时间与最近使用时间,支持不停机轮换。
- 密码哈希与强度校验:Argon2id(推荐)与 bcrypt(12+ 轮次)两套实现,配合长度、大小写、数字、特殊字符的强度规则。
- MFA 完整链路:TOTP 密钥生成、二维码生成、验证码校验、备份码生成与一次性消费,以及与主登录流程的串联。
- 上线前安全检查清单:凭证存储、令牌安全、攻击预防、会话安全、传输安全、合规隐私六大类,外加时序攻击、算法混淆、会话固定、越权访问等常见漏洞的规避方法。
和普通工具比强在哪
- 不是“代码片段搬运”:普通搜索给的是零散片段,
auth给的是带取舍理由的完整方案,比如为什么分布式系统不要用 HS256。 - 带安全默认值:访问令牌 15 分钟、刷新令牌最多 7 天、登录限流 15 分钟 5 次、10 次失败锁 30 分钟、绝对超时 24 小时 / 空闲超时 30 分钟——这些默认值能显著降低“随手写错”的概率。
- 有明确的职责边界:技能说明中直接写明不覆盖漏洞扫描、安全审计、威胁建模,避免用户误用导致“以为审过了其实没审”。
- 区分使用深度:基础场景(加登录、接 OAuth2 提供商)可直接用;架构级决策(从零设计认证体系、令牌轮换规划、Keycloak / Auth0 / Cognito 选型、SSO / SAML / OIDC 集成)建议升级到更高能力的模型处理,属于一种“按难度分级”的设计。
3. 如何使用该技能?
第一步:用自然语言描述需求,让技能自动唤起
不需要记命令,只要问题里出现触发词即可。例如:
「帮我实现一个带 MFA 的登录接口,密码用 Argon2id 存,失败 10 次锁定 30 分钟。」
第二步:按场景选择提问颗粒度
- 流程级:我要给 SPA 接 OAuth2 登录,用什么流程?
- 代码级:给我一段刷新令牌轮换的实现。
- 决策级:JWT 和 Session 我该选哪个?
- 审查级:这段认证代码上线前需要检查哪些点?
第三步:读取输出并落地
典型输出的结构是:先给方案与取舍说明,再给可直接参考的代码,最后附注意事项。以“实现带刷新令牌的登录”为例,输出通常包含三层:
- 选型说明:公共客户端走 PKCE,服务端走授权码流程,令牌用 RS256 签发。
- 代码骨架:登录函数中依次完成用户查询 → 账户锁定检查 → 密码校验 → MFA 校验(未传验证码时返回
requiresMfa与临时 mfaToken)→ 失败计数重置 → 签发访问令牌与刷新令牌。 - 自查项:错误信息统一为“无效凭据”以防用户枚举、刷新令牌需哈希入库、登录端点需限流。
第四步:输入示例与预期输出
| 你的提问 | 技能给出的内容方向 |
|---|---|
| 「给移动端 App 设计登录,要求防重放」 | PKCE 流程 + code_challenge(S256) + state 校验 + 令牌短生命周期 |
| 「后台管理系统要分管理员、经理、普通用户」 | RBAC 角色权限表 + requirePermission 中间件 + :own 资源级判断 |
| 「机密文档只允许工作时间内访问」 | ABAC 策略函数,组合主体属性、资源密级、环境时间 |
| 「用户改了密码,怎么让旧会话全部失效」 | 会话按 userId 建立索引,改密时批量删除会话键 |
| 「对外提供开放 API,要发密钥」 | 前缀标识 + SHA-256 哈希入库 + 作用域 + 每分钟限流 |
第五步:用安全检查清单兜底
实现完成后,直接把技能输出的“关键安全检查清单”当作自查表逐条过:凭证有没有被写进日志、令牌声明是否全部校验、重定向 URI 是否白名单、Cookie 是否设置 httpOnly / secure / sameSite、认证事件是否留痕。
4. 同类型竞品对比分析
| 方案名称 | 定位 | 核心功能 | 安装/使用门槛 | 适用场景 | 优势与不足 |
|---|---|---|---|---|---|
| auth(身份验证与授权Skill) | AI 技能,提供认证授权的设计知识与实现范式 | OAuth2/JWT/RBAC/ABAC/会话/API 密钥/密码哈希/MFA 全链路指导 + 安全检查清单 | 低:在支持的 AI 客户端中安装启用即可,无需部署服务 | 需要快速写出正确认证代码、做方案选型与上线前自查 | 优势:知识密度高、覆盖全、带安全默认值、可对话式追问;不足:不提供运行时服务,不替代漏洞扫描与安全审计 |
| Auth0 / 托管身份服务 | 商业化的身份即服务(IDaaS) | 现成的登录页、社交登录、MFA、SSO、令牌签发 | 中:注册租户、配置应用、按量或按订阅计费(以官方说明为准) | 希望零运维快速上线、有合规与多租户需求 | 优势:开箱即用、运维成本低;不足:依赖外部服务、成本随用户规模上升、深度定制受平台约束 |
| Keycloak / 自建身份提供商 | 开源自托管 IdP | OIDC/SAML/SSO、用户联邦、角色与权限管理 | 较高:需自行部署、运维、集群与证书管理 | 数据不出内网、需要完全可控的 SSO 体系 | 优势:可控性强、无供应商锁定;不足:运维与升级负担重,架构设计仍需团队自己拍板 |
| 通用代码助手 / 直接搜索文档 | 无专门认证知识的通用问答 | 零散片段、单文件示例 | 低 | 简单问题、查 API 签名 | 优势:随手可用;不足:缺少体系化取舍与安全清单,容易漏掉令牌校验、限流、枚举防护等关键点 |
怎么选:要“写对代码”,选 auth 技能;要“不运维”,选托管身份服务;要“完全自控”,选自建 IdP。三者并不互斥——常见组合是先用技能定架构,再决定自建还是托管,最后用技能的检查清单验收。
5. 该技能的典型应用场景与实际体验情况
场景一:从零搭一个 SaaS 的账号体系(后端工程师)
痛点:注册、登录、找回密码、会话保持四件事分散在不同模块,容易各写一套,风格与安全等级不一致。 用法:一次性描述“账号体系需求”,让技能按“密码哈希 + 会话管理 + 密码重置时限令牌”的组合给出统一方案。 体验:上手难度低,输出结构清晰,安全默认值直接可用。注意点是技能给出的超时、限流数值是通用推荐,需结合产品实际(比如内部工具可以放宽空闲超时)调整。
场景二:给 SPA 和移动端接第三方登录(前端 / 全栈工程师)
痛点:不知道该用授权码还是隐式流程,担心回调被劫持。 用法:提问时明确“公共客户端”,技能会引导到 PKCE 流程,并给出 code_verifier 生成、code_challenge_method=S256、令牌交换时携带 verifier 的完整链路。 体验:最大的收获是把 state、PKCE、重定向白名单三件事串成一个整体,而不是各查各的。注意事项:client_secret 绝不能出现在前端代码里,这一点需要在提示中强调客户端类型,避免拿到服务端方案。
场景三:后台管理系统的权限细分(中高级工程师)
痛点:角色越加越多,“管理员 / 经理 / 普通用户”之外还需要“只能看自己创建的数据”。
用法:先要 RBAC 基础表,再追加 resource:action:scope 形式的资源级权限,必要时升级到 ABAC 处理“部门 + 密级 + 时间”的组合条件。
体验:RBAC 到 ABAC 的过渡讲得比较自然,requirePermission 中间件可以直接改改就用。注意:权限模型一旦上线,后续调整成本高,建议在设计阶段就让技能把“扩展路径”一并列出来。
场景四:对外 OpenAPI 的密钥与限流(平台 / 开放平台团队)
痛点:密钥明文存库、无法轮换、被刷了才发现。 用法:要“API 密钥体系设计”,技能会给出前缀标识、SHA-256 哈希入库、作用域、每分钟计数限流、最近使用时间异步更新、不停机轮换。 体验:这是最“开箱即用”的场景之一,实现路径明确。注意事项:限流只是基础防护,技能本身不负责攻击面扫描,真实的渗透测试与安全审计仍需独立流程。
6. 该技能能为用户带来的价值
效率层面:把“查文档 → 对比方案 → 写代码 → 自查”的多轮往返压缩成一次对话。一个登录加权限模块,省下的往往是数小时的检索与试错,以及后续因令牌策略不当引发的重构。
质量层面:技能把安全默认值内置在方案里——短生命周期访问令牌、刷新令牌轮换、统一错误信息防枚举、登录限流与账户锁定、会话双重超时、Cookie 三项安全属性。这些细节单独看都不难,难的是每次都记得,而这正是技能最稳的贡献。
门槛层面:让不熟悉认证领域的前后端工程师也能拿到接近安全专家思路的方案;同时通过“何时升级、何时请求审核”的分级说明,让人知道自己什么时候该停下来找专家复核,而不是盲目自信。
长期价值:认证授权是典型的“一次设计、长期背负”的模块。技能输出的不仅是代码,还有可复用的架构判断标准和一份可沉淀为团队 CheckList 的安全清单——这部分价值会随项目数量累积,越用越划算。
7. 常见问题 FAQ
Q1:怎么安装这个技能?需要命令行吗?
A:不需要命令行。只要你的 AI 客户端支持技能能力,在技能市场用中文名「身份验证与授权」、英文名 auth 或技能ID 13524 检索并启用即可。具体入口与按钮名称以官方说明为准。安装后新开会话,输入带触发词的问题(如“JWT 刷新令牌怎么设计”)即可验证是否生效。
Q2:这个技能收费吗? A:技能本身不包含计费信息,是否收费、如何计费取决于你所使用的 AI 平台或客户端的政策,请以官方说明为准。
Q3:它能帮我做安全审计或漏洞扫描吗?
A:不能,这也是技能明确划出的边界。它的定位是认证授权的设计与实现指导;漏洞扫描请用 /security-scan,安全审计请用 /security-audit,威胁建模请用 /threat-model。把实现和审计分开,反而是更负责的做法。
Q4:适合谁用?新手能用吗? A:适合正在实现登录注册、访问控制、令牌、会话、API 密钥或 MFA 的开发工程师,以及需要做认证架构决策的资深工程师和架构师。新手可以直接获得可运行的代码范式;资深工程师更适合用它做选型对比和上线前自查。技能说明中也建议:涉及密码哈希、敏感令牌、身份提供商配置、SSO/SAML/OIDC 集成等场景,应额外走一次专业审核。
Q5:和 Auth0、Keycloak 这类方案冲突吗?
A:不冲突,层级不同。Auth0 是托管服务,Keycloak 是自建身份提供商,它们解决“谁来签发和托管身份”;auth 技能解决“我该怎么设计流程、怎么校验令牌、怎么定权限模型、上线前检查什么”。典型用法是:先用技能理清架构与安全要求,再决定接入托管服务还是自建,最后用技能给出的检查清单验收集成结果。