使用 OpenIddict 设置授权服务器 - 第一部分 - 简介

2025-06-10

使用 OpenIddict 设置授权服务器 - 第一部分 - 简介

本文是“使用 OpenIddict 设置授权服务器”系列文章的一部分。本系列文章将指导您完成使用OpenIddict在ASPNET Core平台上设置 OAuth2 + OpenID Connect 授权服务器的过程

GitHub 徽标 robinvanderknaap /授权服务器 openiddict

使用 OpenIddict 实现的授权服务器。


设置授权服务器可以支持基于令牌的身份验证和授权。它还允许您在一个中心位置对所有应用程序的用户进行身份验证,即单点登录 (SSO)。

授权服务器可以同时提供一种或多种身份验证方法,例如本地用户名密码,以及外部身份提供商,例如 Google、Facebook 或 ADFS。

通过实现 OAuth2 和 OpenID Connect,您可以实现多种授权场景:Web 应用程序、桌面应用程序、机器对机器通信,甚至客厅设备的授权。OAuth2 和 OpenID Connect 都是行业标准。

身份服务器

十多年来,.NET 中用于实现安全令牌服务以及后来的 OAuth2 + OpenID Connect 的首选项目是IdentityServer。最近,IdentityServer 的创建者/维护者决定对 IdentityServer 的未来版本进行双重许可。现在,除非您正在开发开源项目,否则您将需要支付商业许可证费用。

尽管对于许多项目或公司来说,购买优质软件不应该成为问题,但我还是出去寻找替代方案。

OpenIddict

IdentityServer 的替代方案是OpenIddict。OpenIddict 提供了一种解决方案,可以在任何 ASP.NET Core 2.1、3.1 和 5.0 应用程序中实现 OpenID Connect 服务器,并且从 OpenIddict 3.0 开始,也可以在任何 ASP.NET 4.x 或 OWIN 应用程序中实现。

OpenIddict 比 IdentityServer 稍微底层一些。Identity Server 提供了一个开箱即用的解决方案,而要让 OpenIddict 正常工作,您需要自行实现一些细节,例如创建声明身份和设置正确的端点。

在本文中,我们将使用 OpenIDdict 实现授权服务器。我们将以客户端凭证流程授权码流程和设置刷新令牌为例进行说明。我们还将演示如何利用 OpenID Connect 检索用户信息。

OAuth2 和 OpenID Connect

OAuth2 和 OpenID Connect 有时会令人困惑,至少对我来说是这样。

它帮助我将授权服务器视为一个普通的 Web 应用。它是一个可以使用用户名密码组合或其他外部提供商登录的应用。到目前为止,它与我们构建的其他 Web 应用没有任何区别。

设置身份验证后,我们可以实现 OAuth2 和 OpenID Connect 流程(这时 OpenIddict 就派上用场了)。其他应用程序(客户端)可以利用这些流程,基本上就是询问“我可以代表这个用户做一些事情吗?”。

为了解决这个问题,客户端首先会将用户重定向到授权服务器。如果用户尚未进行身份验证(单点登录),则需要进行身份验证。之后,系统会询问用户是否允许客户端代表用户发出请求。如果允许,外部应用程序将收到一个访问令牌,以便代表用户发出请求。

除了访问令牌(OAuth2)之外,还可以颁发单独的身份令牌(OpenID Connect)。客户端可以使用身份令牌来提取用户信息。

下一个

在下一篇文章中,我们将首先创建一个新的 ASPNET Core 项目并实现身份验证,作为迈向成熟授权服务器的第一步。

鏂囩珷鏉ユ簮锛�https://dev.to/robinvanderknaap/setting-up-an-authorization-server-with-openiddict-part-i-introduction-4jid
PREV
对于前端开发,您如何组织代码(在框架之外),以及使用什么工具来管理它?
NEXT
如何做出你的第一个开源贡献