使用内置中间件在 .NET Core 中发行令牌

Issuing tokens in .NET Core using built in middleware

我知道 ASP.NET 核心有程序集 Microsoft.AspNetCore.Authentication.JwtBearer which we can use for token validation. However, I just can't quite understand whether ASP.NET Core built-in middleware can be also used to generate the tokens like we did with Microsoft.Owin.Security.OAuth。有人可以帮我澄清以下问题吗?

  1. 我们能否像使用 Microsoft.Owin.Security.OAuth 那样使用 Microsoft.AspNetCore.Authentication.JwtBearer 生成和发行令牌,例如:

    app.UseOAuthAuthorizationServer(oAuthServerOptions); app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

    没有编写自定义代码来生成令牌?

  2. 如果我们不能用 Microsoft.Owin.Security 做到这一点,那么 Microsoft.AspNetCore.Owin 中是否有类似于 Microsoft.Owin.Security.OAuth 的功能?

如果我们想使用应用程序内用户存储,是否可以使用像 IdentityServer4 这样的第 3 方解决方案,为客户端公开端点以获取令牌并将其用于授权?谢谢

Can we generate and issue tokens using Microsoft.AspNetCore.Authentication.JwtBearer like we did with Microsoft.Owin.Security.OAuth

Microsoft.AspNetCore.Authentication.JwtBearer 只是关于 JWT 令牌验证。它与 Microsoft.Owin.Security.OAuth 中的 OAuth 2.0 和 OpenID Connect 无关。此外,根据这个 link ASP.NET 团队决定不移植它。

因此,要实现 OAuth 2.0 and OpenID Connect,您肯定需要使用第三方包。

对于基本情况,使用您提到的 IdentityServer4OpenIddict 作为替代方案很方便。

对于更高级的场景,我更喜欢 ASOS,它被 OpenIddict 使用。顺便说一句,ASOS 是从 Katana 的 OAuth2 授权服务器中间件派生出来的。

至于Microsoft.AspNetCore.OwinMicrosoft.Owin.Security.OAuth不一样。它只是 ASP.NET 核心应用程序中 运行 OWIN 中间件的适配器,反之亦然