目录

OpenIddict

OpenIddict 旨在提供一种通用的解决方案,以在任何 ASP.NET Core 2.1(及更高版本)应用程序中实现OpenID Connect 客户端、服务器和令牌验证支持。 由于本机 Microsoft.Owin 4.2 集成,ASP.NET 4.6.1(及更高版本)应用程序也得到了完全支持。

构建状态

什么是 OpenIddict?

OpenIddict 旨在提供一种通用的解决方案,以在任何 ASP.NET Core 2.1(及更高版本)应用程序中实现OpenID Connect 客户端、服务器和令牌验证支持由于本机 Microsoft.Owin 4.2 集成,ASP.NET 4.6.1(及更高版本)应用程序也得到了完全支持

OpenIddict 完全支持代码/隐式/混合流客户端凭据/资源所有者密码授予设备授权流

OpenIddict 本机支持Entity Framework CoreEntity Framework 6MongoDB 开箱即用,可以实现自定义存储以支持其他提供商。


入门

强烈建议寻求简单和交钥匙解决方案的开发人员使用OrchardCore 及其基于 OpenIddict 的 OpenID 模块,具有合理的默认值并提供内置管理 GUI 以轻松注册 OpenID 客户端应用程序。

要使用 OpenIddict 实现自定义 OpenID Connect 服务器,请阅读入门

可以在专用存储库 中找到演示如何将 OpenIddict 与不同的 OAuth 2.0/OpenID Connect 流程结合使用的示例


兼容性矩阵

网络框架版本 .NET 运行时版本 OpenIddict 3.x OpenIddict 4.x(预览版)
ASP.NET 核心 2.1 .NET 框架 4.6.1 ✔️ℹ️ _ ✔️ℹ️ _
ASP.NET 核心 2.1 .NET 框架 4.7.2 ✔️ ✔️
ASP.NET 核心 2.1 .NET 框架 4.8 ✔️ ✔️
ASP.NET 核心 2.1 .NET 核心 2.1 ✔️
ASP.NET 核心 3.1 .NET 核心 3.1 ✔️ ✔️
ASP.NET 核心 5.0 .NET 5.0 ✔️
ASP.NET 核心 6.0 .NET 6.0 ✔️ ✔️
ASP.NET 核心 7.0 .NET 7.0 ⚠️ℹ️ _ ⚠️ℹ️ _
微软.Owin 4.2 .NET 框架 4.6.1 ✔️ℹ️ _ ✔️ℹ️ _
微软.Owin 4.2 .NET 框架 4.7.2 ✔️ ✔️
微软.Owin 4.2 .NET 框架 4.8 ✔️ ✔️

注意:Microsoft 不再支持 .NET Core 2.1 上的 ASP.NET Core 2.1 和 .NET 5.0 上的 ASP.NET Core 5.0。由于 .NET Standard 2.0 的兼容性,OpenIddict 4.x 仍然可以在 .NET Core 2.1 上使用,但强烈建议用户迁移到 ASP.NET Core/.NET 6.0.NET Framework 4.6.1(及更高版本)上的 ASP.NET Core 2.1 仍然得到完全支持。

注意:OpenIddict 受到 ASP.NET Core 7.0 中引入的重大更改的影响,AppContext如果应用程序仅单独使用 OpenIddict 服务器功能而没有注册任何其他身份验证处理程序,则可能需要使用兼容性开关。有关详细信息,请阅读ASP.NET Core 7.0 的默认身份验证处理程序回退中断 OpenIddict

ℹ️ 注意:以下功能在面向 .NET Framework 4.6.1 时不可用

  • X.509 开发加密/签名证书:如果找不到有效的开发证书并且必须生成新证书,则调用AddDevelopmentEncryptionCertificate()orAddDevelopmentSigningCertificate() 将导致在运行时抛出错误。PlatformNotSupportedException
  • X.509 ECDSA 签名证书/密钥:调用AddSigningCertificate()AddSigningKey() 使用 ECDSA 证书/密钥将始终导致PlatformNotSupportedException在运行时抛出。

认证

与许多其他身份提供者不同,OpenIddict 不是一个交钥匙解决方案,而是一个需要编写自定义代码 才能运行的框架(通常,至少是一个授权控制器),这使得它不太适合认证程序。

虽然可以按原样提交参考实现,但这并不能保证 OpenIddict 用户部署的实现符合标准。

相反,鼓励开发人员在实现自己的逻辑后针对自己的部署执行一致性测试。

示例存储库包含专门设计用于 OpenID Connect 提供商认证工具的专用示例,并展示了 OpenIddict 可以轻松地用于经过认证的实施。为了尽可能快地执行认证测试,该示例不包含任何成员资格或同意功能(建议使用两个硬编码身份进行需要在身份之间切换的测试)。