【问题标题】:JWT and implementationsJWT 和实现
【发布时间】:2017-07-25 01:41:39
【问题描述】:

我正在考虑保护 API 并被推荐使用基于 JWT 的方法,尽管在在线阅读并遵循几个教程之后,我比以前更加困惑。所以这就是我收集的信息:JWT 是一个标准,并且有几个实现......所以我必须为我的 API 选择一个实现是对的吗?

如果是这样,我可以使用哪些行业推荐的开箱即用的实现来避免重新发明轮子?作为 .net 开发人员,我更有可能使用Asp.Net Identity,它可以发布和验证我相信的 JWT(如果我错了,请纠正我)。这是最好的方法吗?不过似乎相当沉重……任何开源项目呢?

我真的不想推出自己的实现...寻找有关该主题的任何建议。

【问题讨论】:

    标签: architecture jwt asp.net-core-webapi


    【解决方案1】:

    JWT 只是一个标准的RFC 75 19,有很多实现。

    有关实现列表,请查看https://jwt.io/(您可以按语言过滤),共有三个 .net 实现,因此您不需要(也不应该)自己动手。

    签名 JWT (JWS) 简介

    签名的 JWT 包含一个 Base64 Url Safe 编码签名作为第三个组件。用于生成签名的算法在标头中指明。

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
    .eyJzdWIiOiJKb2huIERvZSIsImFkbWluIjp0cnVlLCJpYXQiOjE0NzAzNTM5OTQsImV4cCI6MTQ3MDM1NzYyNywianRpIjoiNmU0MDRiYTgtZjg4NS00ZDVmLWJmYTItZTNmNWEwODM4MGE0In0
    .7CfBdVP4uKsb0cogYepCvMLm8rcpjBYW1XZzA-a5e44
    

    标题

    {
      "typ": "JWT",
      "alg": "HS256"
    }
    

    此 JWT 使用 HMAC-SHA256 算法签名,因此为 alg: HS256

    有效载荷

    {
      "sub": "John Doe",
      "admin": true,
      "iat": 1470353994,
      "exp": 1470357627,
      "jti": "6e404ba8-f885-4d5f-bfa2-e3f5a08380a4"
    }
    

    可以使用 UTF-8 密码 notsosecret 验证此 JWT。

    摘自Getting started with jwt - Signed JWT (JWS)。原作者是Nate Barbettini。归属细节可以在contributor page 上找到。该源在CC BY-SA 3.0 下获得许可,可以在Documentation archive 中找到。参考主题 ID:5213 和示例 ID:18559。

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 2019-07-11
      • 2018-11-27
      • 2017-05-27
      • 2020-11-03
      • 2021-04-26
      • 2021-02-14
      • 2019-04-21
      • 2018-03-27
      相关资源
      最近更新 更多