项目
版本

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 CoreEntity 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 的项目

安全政策

安全问题和漏洞应通过电子邮件发送至 security@openiddict.com 私下报告。您应在 24 小时内收到回复。如果因某种原因未收到回复,请通过电子邮件跟进,确保我们收到了您的原始消息。

支持

如果您需要支持,请确保在创建 GitHub 问题之前 赞助该项目。如果您不是赞助者,您可以在 Gitter 或 StackOverflow 上提问:

❗ 随着 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>

贡献者

OpenIddictKévin Chalet 积极维护。我们欢迎贡献,并可通过提交拉取请求的方式进行。

特别感谢 我们的赞助者 给予的巨大支持

Volosoft logo

许可

该项目遵循 Apache 许可 。这意味着您可以自由地使用、修改和分发它。详情请参阅 http://www.apache.org/licenses/LICENSE-2.0.html

在本文档中