我正在考虑保护API并且建议使用基于JWT的方法,尽管在线阅读并遵循几个教程之后我比以前更加困惑。所以这就是我收集的内容:JWT是一个标准,并且有几个实现......所以我是对的,我必须选择一个用于我的API的实现吗?
如果是这样,我可以使用哪些是行业推荐的开箱即用,以避免重新发明轮子?作为.net开发人员,我更有可能使用Asp.Net Identity
来发布和验证我相信的JWT(如果我错了,请纠正我)。这是最好的方法吗?看起来相当沉重......任何开源项目呢?
我真的不想推出自己的实施方式......寻找有关该主题的任何建议。
答案 0 :(得分:0)
JWT只是一个标准RFC 75 19,有许多实现。
对于实现列表,请查看https://jwt.io/(您可以按语言过滤),有三种.net实现,因此您不需要(也不应该)自己滚动。
签名的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。