返回顶部
c

clerk-auth职员认证

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.1.0
安全检测
已通过
1,600
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

clerk-auth

Clerk Auth - 重大变更与错误预防指南

包版本: @clerk/nextjs@6.36.7, @clerk/backend@2.29.2, @clerk/clerk-react@5.59.2, @clerk/testing@1.13.26
重大变更: 2025年11月 - API版本2025-11-10, 2024年10月 - Next.js v6异步auth()
最后更新: 2026-01-09



新功能 (2025年12月 - 2026年1月)

1. API密钥测试版 (2025年12月11日) - 全新 ✨

适用于应用程序的用户级和组织级API密钥。零代码UI组件。

typescript
// 1. 添加自助API密钥管理组件
import { APIKeys } from @clerk/nextjs

export default function SettingsPage() {
return (


API Keys


{/ 用户API密钥的完整CRUD界面 /}

)
}

后端验证:
typescript
import { verifyToken } from @clerk/backend

// API密钥与会话令牌的验证方式相同
const { data, error } = await verifyToken(apiKey, {
secretKey: process.env.CLERKSECRETKEY,
authorizedParties: [https://yourdomain.com],
})

// 检查令牌类型
if (data?.tokenType === api_key) {
// 处理API密钥认证
}

clerkMiddleware令牌类型:
typescript
// v6.36.0+: 中间件可以区分令牌类型
clerkMiddleware((auth, req) => {
const { userId, tokenType } = auth()

if (tokenType === api_key) {
// API密钥认证 - 程序化访问
} else if (tokenType === session_token) {
// 常规会话 - Web界面访问
}
})

定价 (测试版 = 免费):

  • - 创建: $0.001/密钥
  • 验证: $0.0001/验证

2. Next.js 16: proxy.ts中间件文件名 (2025年12月)

⚠️ 重大变更: Next.js 16因关键安全漏洞(2025年3月披露的CVE)更改了中间件文件名。

背景: 2025年3月的漏洞(影响Next.js 11.1.4-15.2.2)允许攻击者通过添加单个HTTP头x-middleware-subrequest: true完全绕过基于中间件的授权。这影响了所有认证库(NextAuth、Clerk、自定义解决方案)。

重命名原因: middleware.ts → proxy.ts的更改不仅仅是表面上的 - 它标志着Next.js表明中间件优先的安全模式是危险的。未来的认证实现不应仅依赖中间件进行授权。

Next.js 15及更早版本: middleware.ts
Next.js 16+: proxy.ts

Next.js 16的正确设置:
typescript
// src/proxy.ts (不是 middleware.ts!)
import { clerkMiddleware } from @clerk/nextjs/server

export default clerkMiddleware()

export const config = {
matcher: [
/((?!_next|[^?]\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).),
/(api|trpc)(.*),
],
}

最低版本: Next.js 16需要@clerk/nextjs@6.35.0+(修复Turbopack构建错误和退出登录时的缓存失效)。

3. 强制密码重置 (2025年12月19日)

管理员可以将密码标记为已泄露并强制重置:

typescript
import { clerkClient } from @clerk/backend

// 强制用户重置密码
await clerkClient.users.updateUser(userId, {
passwordDigest: compromised, // 下次登录时触发重置
})

4. 组织报告与筛选 (2025年12月15-17日)

仪表板现在包括组织创建指标以及按名称/别名/日期筛选的功能。



API版本2025-11-10重大变更

1. API版本2025-11-10 (2025年11月10日) - 重大变更 ⚠️

影响: 使用Clerk计费/商务API的应用程序

关键变更:

  • - 端点URL: /commerce/ → /billing/ (30+个端点)

GET /v1/commerce/plans → GET /v1/billing/plans
GET /v1/commerce/statements → GET /v1/billing/statements
POST /v1/me/commerce/checkouts → POST /v1/me/billing/checkouts

  • - 字段术语: paymentsource → paymentmethod
typescript // 旧版 (已弃用) { paymentsourceid: ..., payment_source: {...} }

// 新版 (必需)
{ paymentmethodid: ..., payment_method: {...} }

  • - 移除的字段: 计划响应不再包含:
- amount, amount_formatted (改用fee.amount) - currency, currency_symbol (使用费用对象) - payertype (使用forpayer_type) - annualmonthlyamount, annual_amount
  • - 移除的端点:
- 发票端点 (使用账单) - 产品端点
  • - 空值处理: 明确规则 - null表示不存在,省略表示不断言存在

迁移: 更新SDK至v6.35.0+,该版本包含对API版本2025-11-10的支持。

官方指南: https://clerk.com/docs/guides/development/upgrading/upgrade-guides/2025-11-10

2. Next.js v6异步auth() (2024年10月) - 重大变更 ⚠️

影响: 所有使用auth()的Next.js服务器组件

typescript
// ❌ 旧版 (v5 - 同步)
const { userId } = auth()

// ✅ 新版 (v6 - 异步)
const { userId } = await auth()

同样影响: auth.protect()在中间件中现在是异步的

typescript
// ❌ 旧版 (v5)
auth.protect()

// ✅ 新版 (v6)
await auth.protect()

兼容性: 支持Next.js 15、16。默认静态渲染。

3. 自定义OAuth的PKCE支持 (2025年11月12日)

自定义OIDC提供商和社交连接现在支持PKCE(代码交换证明密钥),用于无法安全存储客户端密钥的原生/移动应用程序,增强安全性。

使用场景: 移动应用、原生应用、无法安全存储密钥的公共客户端。

4. 客户端信任:凭证填充防御 (2025年11月14日)

当用户从未知设备登录时自动进行二次认证:

  • - 对拥有有效密码但未启用2FA的用户激活
  • 无需配置
  • 包含在所有Clerk计划中

工作原理: 当检测到从新设备登录时,Clerk自动提示额外验证(邮箱验证码、备用验证码)。

5. Next.js 16支持 (2025年11月)

@clerk/nextjs v6.35.2+ 包含Next.js 16退出登录时的缓存失效改进。



关键模式与错误预防

Next.js v6: 异步auth()辅助函数

模式:
typescript
import { auth } from @clerk/nextjs/server

export default async function Page() {
const { userId } = await auth() // ← 必须await

if (!userId) {
return

未授权

}

return

用户ID: {userId}

}

Cloudflare Workers: authorizedParties (CSRF预防)

关键: 始终设置authorizedParties以防止CSRF攻击

typescript
import { verifyToken } from @clerk/backend

const { data, error } = await verifyToken(token, {
secretKey: c.env.CLERKSECRETKEY,
// 必需: 防止CSRF攻击
authorizedParties: [https://yourdomain.com],
})

原因: 没有authorizedParties,攻击者可以使用来自其他域的有效令牌。

来源: https://clerk.com/docs/reference/backend/verify-token



clerkMiddleware()配置

路由保护模式

typescript
import { clerkMiddleware, createRouteMatcher } from @clerk/nextjs/server

// 定义受保护路由
const isProtectedRoute = createRouteMat

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 clerk-auth-1776376040 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 clerk-auth-1776376040 技能

通过命令行安装

skillhub install clerk-auth-1776376040

下载

⬇ 下载 clerk-auth v0.1.0(免费)

文件大小: 50.66 KB | 发布时间: 2026-4-17 14:39

v0.1.0 最新 2026-4-17 14:39
- Initial public release with comprehensive guide for Clerk authentication.
- Introduces API Keys beta (Dec 2025) supporting user/org-scoped API keys, with CRUD UI component and backend verification patterns.
- Details breaking changes for Next.js 16: new proxy.ts middleware filename (replacing middleware.ts) due to March 2025 CVE; Clerk v6.35.0+ required.
- Covers API version 2025-11-10 breaking changes (Nov 2025) impacting billing endpoints, field terminology, and response structure.
- Documents new features: force password reset, organization analytics filters, PKCE for custom OAuth, and automatic credential stuffing defense.
- Includes updated error prevention, webhook verification, and best practices for production setups and middleware configuration.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部