【问题标题】:How do you implement JWT authentication in .NET Core 2.0?如何在 .NET Core 2.0 中实现 JWT 身份验证?
【发布时间】:2018-03-13 07:50:09
【问题描述】:

我在 .NET Core 2.0 中实现 JWT 令牌身份验证时遇到了一些问题。我已经阅读了许多在线博客文章,但是它们现在大多已经过时了,因为它们是针对 .NET Core 1.x 的。

我还发现很难找到任何有关如何生成和颁发令牌的文档。在 .NET Framework Web API 中,这一切都是由框架代码“神奇地”处理的。

我正在构建一个具有自定义身份实体和自定义存储实现以及 Angular 前端的 API。

我正在寻找一种在 API 中使用'/token' 端点生成令牌的方法,然后在通过 http 请求中的 Authorizaton: Bearer {token} 标头传入令牌时对请求进行身份验证和授权?

【问题讨论】:

    标签: .net-core jwt


    【解决方案1】:

    使用下面的链接进行实施..

    Part I

    Part II

    只是授权使用授权属性为

    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    

    因为我们在 startup.cs 中注册了单独的身份验证方案,因此将为 JwtBearerDefaults.AuthenticationScheme 创建 cookie。

    【讨论】:

      【解决方案2】:

      在 Startup.cs -> ConfigureServices 中,添加以下内容,使用您的设置进行更新:

      services.AddAuthentication(o =>
      {
      o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
      o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
      }).AddJwtBearer(options =>
      {
      options.Audience = "your audience";
      options.ClaimsIssuer = "claims issuer";
      options.TokenValidationParameters = new TokenValidationParameters
      {
      ValidIssuer = "claims issuer",
      IssuerSigningKey = { your signing key }
      };
      });
      

      接下来,在配置中:

      app.UseAuthentication();
      app.UseMvc();
      

      你必须确保 UseAuthentication 在 UseMvc 之前才能工作。

      基本上,以前在 Configure 方法中的所有内容现在都已移至 Services 部分:)

      查看此博客文章以获取示例,以及指向可以获取示例项目的存储库的链接:Shawn Wildermuth's Blog

      【讨论】:

        猜你喜欢
        • 2018-06-22
        • 2018-03-24
        • 2018-03-01
        • 2018-12-21
        • 2015-01-21
        • 2017-09-11
        • 2018-01-28
        • 2017-11-28
        • 2019-06-24
        相关资源
        最近更新 更多