OpenIddict 中文文档
让你沉迷其中的 OpenID Connect 栈
OpenIddict 是什么?
OpenIddict 旨在提供一个灵活的解决方案来实现 OpenID Connect 客户端,在任何 ASP.NET Core 2.1(及更高版本)应用程序中实现服务器和令牌验证支持。ASP.NET 4.6.1(及更高版本)的应用程序也得到完全支持,这得益于与原生 Microsoft.Owin 4.2 的集成。
OpenIddict 完全支持 代码/隐式/混合流程,客户端凭据/资源所有者密码授权 以及 设备授权流程。
OpenIddict 原生支持 Entity Framework Core、Entity Framework 6 以及 MongoDB 的开箱即用存储,此外还可以自定义其他提供商的支持。
入门指南
强烈建议寻求简单且即插即用解决方案的开发者使用 OrchardCore 及其基于 OpenIddict 的 OpenID 模块。该模块自带合理的默认配置,并提供了内置的管理 GUI,以便轻松注册 OpenID 客户端应用。
若要使用 OpenIddict 实现自定义 OpenID Connect 服务器,请阅读 入门指南。
展示如何结合不同 OAuth 2.0/OpenID Connect 流程使用 OpenIddict 的示例可在专门的 仓库 中找到。
兼容性矩阵
Web 框架版本 | .NET 运行时版本 | OpenIddict 4.x | OpenIddict 5.x |
---|---|---|---|
ASP.NET Core 2.1 | .NET Framework 4.6.1 | ✔️ℹ️ | ✔️ℹ️ |
ASP.NET Core 2.1 | .NET Framework 4.7.2 | ✔️ | ✔️ |
ASP.NET Core 2.1 | .NET Framework 4.8 | ✔️ | ✔️ |
ASP.NET Core 2.1 | .NET Core 2.1 | ❗ | ❗ |
ASP.NET Core 3.1 | .NET Core 3.1 | ✔️ | ❗ |
ASP.NET Core 5.0 | .NET 5.0 | ❗ | ❗ |
ASP.NET Core 6.0 | .NET 6.0 | ✔️ | ✔️ |
ASP.NET Core 7.0 | .NET 7.0 | ✔️ | ✔️ |
ASP.NET Core 8.0 | .NET 8.0 | ✔️ | ✔️ |
Microsoft.Owin 4.2 | .NET Framework 4.6.1 | ✔️ℹ️ | ✔️ℹ️ |
Microsoft.Owin 4.2 | .NET Framework 4.7.2 | ✔️ | ✔️ |
Microsoft.Owin 4.2 | .NET Framework 4.8 | ✔️ | ✔️ |
❗注意:.NET Core 上的 ASP.NET Core 2.1、ASP.NET Core 3.1 和 5.0 已不再受 Microsoft 支持。虽然由于其 .NET Standard 2.0 兼容性,OpenIddict 仍可以在这些平台上使用,但强烈建议用户迁移到 ASP.NET Core/.NET 6.0 及以上版本。
ℹ️ 注释:当目标为.NET Framework 4.6.1 时,以下功能不可用:
- X.509 开发加密/签名证书:如果无法找到有效的开发证书且必须生成新证书,调用
AddDevelopmentEncryptionCertificate()
或AddDevelopmentSigningCertificate()
将导致运行时抛出PlatformNotSupportedException
。 - X.509 ECDSA 签名证书/密钥:使用 ECDSA 证书/密钥调用
AddSigningCertificate()
或AddSigningKey()
将始终导致运行时抛出PlatformNotSupportedException
。
认证
与许多其他身份提供商不同,OpenIddict 不是一个开箱即用的解决方案,而是一个需要编写自定义代码才能运行的框架(通常至少需要一个授权控制器),这使得它不太适合作为认证计划的候选者。
虽然可以将参考实现原样提交进行认证,但这并不能保证 OpenIddict 用户部署的实现会遵循标准。
因此,我们鼓励开发者在实现了自己的逻辑后,针对自己的部署执行一致性测试。
示例仓库中包含了一个 专门的示例,特别设计用于与 OpenID Connect 提供商认证工具一起使用,并展示 OpenIddict 如何能轻易地在一个经过认证的实现中使用。为了尽可能快地执行认证测试,该示例不包括任何会员或同意功能(为需要在身份间切换的测试提供了两个硬编码的身份)。
资源
正在寻找更多资源帮助您开始使用 OpenIddict 吗? 不要错过这些有趣的博客文章:
- OpenIddict 4.0 预览版 1 发布 作者:Kévin Chalet
- 介绍由 OpenIddict 驱动的提供商 作者:Kévin Chalet
- 介绍 OpenIddict 客户端 作者:Kévin Chalet
- 使用 BFF 和 OpenIddict 保护 Blazor WASM ASP.NET Core 托管应用 作者:Damien Bowden
- 如何使用 Virto Commerce B2B 电子商务平台通过 OpenIddict 保护 ASP.NET Core 应用:技术案例研究 作者:Virto Commerce
- OpenIddict 3.0 正式发布 作者:Kévin Chalet
- 使用 OpenIddict 设置授权服务器 作者:Robin van der Knaap
- 介绍 OpenIddict 3.0 的第一个发布候选版本 作者:Kévin Chalet
- OpenIddict 3.0 beta6 发布 作者:Kévin Chalet
- 在 OpenIddict 3.0 beta4 中引入 Quartz.NET 支持和新语言 作者:Kévin Chalet
- 在 OpenIddict 3.0 beta3 中引入本地化支持 作者:Kévin Chalet
- OpenIddict 3.0 beta2 发布 作者:Kévin Chalet
- 介绍 OpenIddict 3.0 beta1 作者:Kévin Chalet
- 向 OWIN 应用添加 OpenIddict 3.0 作者:Kévin Chalet
- 使用 OpenIddict 3.0 的降级模式创建 OpenID Connect 服务器代理 作者:Kévin Chalet
第三方维护的基于 OpenIddict 的项目:
- OrchardCore OpenID 模块:即插即用的 OpenID Connect 服务器和令牌验证解决方案,设计时考虑了多租户
- OpenIddict UI 作者:Thomas Duft:管理客户端应用和范围的无头 UI
- P41.OpenIddict.CouchDB 作者:Panos Athanasiou:OpenIddict 的 CouchDB 存储
- pixel-identity 作者:Nishant Singh:基于 OpenIddict 和 ASP.NET Identity 的即开即用 OpenID Connect 服务,带有 Blazor 界面用于管理用户、角色、应用和范围,支持多种数据库。
安全政策
安全问题和漏洞应通过电子邮件发送至 security@openiddict.com 私下报告。您应在 24 小时内收到回复。如果因某种原因未收到回复,请通过电子邮件跟进,确保我们收到了您的原始消息。
支持
如果您需要支持,请确保在创建 GitHub 问题之前 赞助该项目。如果您不是赞助者,您可以在 Gitter 或 StackOverflow 上提问:
- Gitter: https://app.gitter.im/#/room/#openiddict_openiddict-core:gitter.im
- StackOverflow: https://stackoverflow.com/questions/tagged/openiddict
❗ 随着 OpenIddict 5.0 现在普遍可用,前一版本 OpenIddict 4.0 将停止支持,不再接收错误修复或安全更新。因此,建议迁移到 OpenIddict 5.0 以继续接收错误和安全修复。
然而,对此政策有两个例外:
只要 Volosoft 支持 ABP Framework 7.0(通常在 ABP 8.0 发布后一年内),ABP Framework 7.0 的用户仍将收到 OpenIddict 4.x 的补丁,无论他们拥有商业 ABP 许可证还是仅使用免费包。
选择了每月$250+赞助的 OpenIddict 赞助者现在可以获得延长支持:
- 每月$250 的赞助者将获得 OpenIddict 4.x 的全面支持直至 2024 年 6 月 18 日(6 个月)。
- 每月$500 的赞助者将获得 OpenIddict 4.x 的全面支持直至 2024 年 12 月 18 日(12 个月)。
- 每月$1,000 的赞助者将获得 OpenIddict 4.x 的全面支持直至 2025 年 12 月 18 日(24 个月)。
每日构建
如果您想尝试最新的特性和错误修复,有一个 MyGet 源提供 OpenIddict 的每日构建。要引用 OpenIddict 的 MyGet 源,请创建一个 NuGet.config
文件(位于解决方案根目录下):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
<add key="openiddict" value="https://www.myget.org/F/openiddict/api/v3/index.json" />
</packageSources>
</configuration>
贡献者
OpenIddict 由 Kévin Chalet 积极维护。我们欢迎贡献,并可通过提交拉取请求的方式进行。
特别感谢 我们的赞助者 给予的巨大支持:
许可
该项目遵循 Apache 许可 。这意味着您可以自由地使用、修改和分发它。详情请参阅 http://www.apache.org/licenses/LICENSE-2.0.html 。