【问题标题】:Issuing tokens in .NET Core using built in middleware使用内置中间件在 .NET Core 中发行令牌
【发布时间】:2018-12-27 12:12:37
【问题描述】:

我了解 ASP.NET Core 具有可用于令牌验证的程序集 Microsoft.AspNetCore.Authentication.JwtBearer。但是,我只是不太明白 ASP.NET Core 内置中间件是否也可以像我们使用 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 这样的第三方解决方案?谢谢。

【问题讨论】:

标签: c# asp.net-core identityserver4 .net-core-authorization


【解决方案1】:

我们能否像使用 Microsoft.Owin.Security.OAuth 一样使用 Microsoft.AspNetCore.Authentication.JwtBearer 生成和颁发令牌

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 Core 应用程序中运行 OWIN 中间件,反之亦然

【讨论】:

  • 我认为Microsoft.AspNetCore.Authentication.JwtBearer 只是关于验证。
  • @ademcaglin,你是对的。为了创建和签署令牌,您需要使用 System.IdentityModel.Tokens.Jwt 包。感谢指正
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 2018-12-25
  • 2018-06-28
  • 2023-04-01
相关资源
最近更新 更多