CoreIdent 0.4:针对 .NET 10+ 的全新重写
Source: Dev.to
CoreIdent 0.4:面向 .NET 10+ 的全新重写
嗨,.NET 社区!我有一个重大更新要分享,关于 CoreIdent:0.4 版是一次完整的重写,从零开始基于 .NET 10 构建,并重新制定了目标和愿景。
如果你一直在关注 0.3.x 系列(Phase 2、Phase 3、ID token 等),可能会想:为什么要重新开始? 让我来解释一下。
🔄 为什么要重写?
0.3.x 代码库让我学到了很多关于身份/认证库真正需求的东西,也暴露了一些根本性的局限:
- 仅支持对称密钥 – HS256 适合演示,但生产环境需要 RS256/ES256 并配合正确的 JWKS 发布。
- 密码优先 – 行业正向无密码方向发展;我们应该引领而不是跟随。
- .NET 9 的限制 – .NET 10 带来了原生 Passkey 支持、更好的度量以及我们想利用的认证 API 改进。
- 测试基础设施债务 – 测试设置变得笨重;我们需要从一开始就拥有可复用的 fixture。
与其在 0.3.x 上进行补丁,我决定在正确的基础上重新构建。
遗留说明:如果需要,0.3.x 代码库已在 legacy-0.3.x-main 标签下保留。
新的愿景
CoreIdent 0.4 旨在成为一个 全方位的认证工具包——不仅是 OAuth 服务器,而是覆盖以下所有场景的单一解决方案:
| 场景 | 描述 |
|---|---|
| 嵌入式认证 | 为 ASP.NET Core 应用提供即插即用的认证 |
| 外部提供者 | 集成 Google、Microsoft、GitHub 等 |
| 身份服务器 | 完整的 OAuth 2.0 / OIDC 功能 |
| 客户端库 | 为 MAUI、WPF、Blazor、控制台应用提供安全认证 |
关键转变:无密码优先。电子邮件魔法链接和 Passkey 成为主要认证方式,密码仅作后备。
当前可用功能
CoreIdent 0.4 已具备坚实的 OAuth/OIDC 基础。
Token 端点(/auth/token)
client_credentials授权refresh_token授权(支持轮换 + 盗用检测)authorization_code授权(强制 PKCE)password授权(已废弃;会记录警告)
授权流程
/auth/authorize端点配合同意 UI/auth/consent用于用户授权管理- 完整的 PKCE 强制执行
标准合规
- Token 撤销(RFC 7009)
- Token 细查(RFC 7662)
- OIDC 发现(
/.well-known/openid-configuration) - JWKS 发布(
/.well-known/jwks.json)——仅公开密钥
非对称密钥支持
生产就绪的 RS256 与 ES256 签名:
builder.Services.AddSigningKey(o => o.UseRsa("/path/to/private-key.pem"));
// or
builder.Services.AddSigningKey(o => o.UseEcdsa("/path/to/ec-key.pem"));
可插拔持久化
- 默认使用内存存储(适合开发/测试)
- 生产环境提供 EF Core 实现:
builder.Services.AddDbContext(options =>
options.UseSqlite(connectionString));
builder.Services.AddEntityFrameworkCoreStores();
测试基础设施
tests/ 目录下的可复用 fixture 与构建器:
CoreIdentTestFixture用于集成测试- Fluent 构建器用于客户端、用户、作用域
- 用于 JWT 验证的断言扩展
🚀 快速入门
下面是一个约 10 行代码的最小 OAuth 服务器示例:
using CoreIdent.Core.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCoreIdent(o =>
{
o.Issuer = "https://issuer.example";
o.Audience = "https://resource.example";
});
builder.Services.AddSigningKey(o => o.UseRsa("/path/to/private-key.pem"));
var app = builder.Build();
app.MapCoreIdentEndpoints();
app.Run();
它为你提供了:
- 多授权方式的 Token 端点
- OIDC 发现 + JWKS
- 带同意的授权码流程
接下来计划
路线图聚焦于让 CoreIdent 成为真正的“一站式”解决方案。
无密码认证
- 电子邮件魔法链接
- Passkey(利用 .NET 10 原生支持)
外部提供者
- Google、Microsoft、GitHub
- 为社区贡献者准备的干净提供者抽象层
客户端库
CoreIdent.Client —— 在任何 .NET 应用中都可使用
- 平台特定实现:MAUI(SecureStorage)、WPF(DPAPI)、Blazor WASM
开发者体验
- 项目模板
- 更友好的错误信息
- OpenTelemetry 度量集成
📚 文档
所有规划与实现文档均在仓库中:
🤝 参与贡献
CoreIdent 使用 MIT 许可证,欢迎贡献。如果你感兴趣:
我们的目标是构建大家都渴望的身份系统——开放、模块化、对开发者友好。
以往文章
如果你跟随了 0.3.x 的历程:
- CoreIdent v0.3.5:OIDC ID Tokens、真实世界的缺口与下一步
- Phase 3 里程碑:OAuth 2.0 授权码流程与令牌安全加固
- Phase 2 完成:添加持久化与可扩展性
感谢你的关注。让我们一起打造伟大的东西吧!