通过OpenIddict设计一个授权服务器01-介绍

https://dev.to/robinvanderknaap/setting-up-an-authorization-server-with-openiddict-part-i-introduction-4jid

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

通过设置授权服务器,可以支持基于令牌的身份验证和授权。它还允许您在一个中心位置对所有应用程序的用户进行身份验证,即单一登录(SSO)。
授权服务器可以同时提供一种或多种身份验证方法,如本地用户名密码,也可以提供外部身份验证提供商,如谷歌、脸书或ADFS。

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

identity server

十多年来,该项目一直在进行中。NET实现安全令牌服务,以及后来的OAuth2+OpenID Connect是IdentityServer。最近,IdentityServer的创建者/维护者决定对未来版本的Identity服务器进行双重许可。现在,除非你正在进行一个开源项目,否则你必须支付商业许可证的费用。

尽管对很多项目或公司来说,为好的软件付费不应该是一个问题,但无论如何,我还是去寻找替代方案。

OpenIddict

IdentityServer的一个替代方案是OpenIddict。OpenIddict提供了一种在任何ASP中实现OpenID Connect服务器的解决方案。NET Core 2.1、3.1和5.0应用程序,并从OpenIddict 3.0开始,任何ASP。NET 4.x或OWIN应用程序。
OpenIddict比IdentityServer稍微低一点。Identity Server为您提供了一个开箱即用的运行解决方案,要使OpenIddict发挥作用,您需要自己实现一些细节,如创建声明标识和设置正确的端点。

在本文中,我们将使用OpenIddict来实现我们的授权服务器。我们将以客户端凭据流、授权代码流和设置刷新令牌为例进行实现。我们还将演示如何利用OpenIDConnect来检索用户信息。

OAuth2 和OpenID Connect

OAuth2和OpenIDConnect有时会令人困惑,至少对我来说是这样。
它帮助我将授权服务器视为另一个web应用程序。这是一个应用程序,您可以使用用户名密码组合或其他外部提供商登录。到目前为止,没有什么不同于我们构建的任何其他web应用程序。

在设置身份验证之后,我们可以实现OAuth2和OpenIDConnect流(这就是OpenIddict发挥作用的地方)。这些流被其他应用程序(客户端)利用,基本上是在问“我能代表这个用户做一些事情吗?”。

为了回答这个问题,客户端首先将用户重定向到授权服务器。如果尚未进行身份验证(SSO),则用户将对自己进行身份验证。之后,询问用户是否允许客户端代表用户进行请求。如果是,外部应用程序将接收一个访问令牌,以代表用户进行请求。

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

在下一篇文章中,我们将从创建一个新的ASP.NET Core项目开始,并将身份验证作为迈向全面授权服务器的第一步。

你可能感兴趣的:(dotnet,服务器,数据库,运维,openiddict)