JWT和实现

时间:2017-03-05 04:07:10

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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。