我正在考虑确保API,并推荐基于JWT的方法,尽管在线阅读并遵循几个教程后,我比以前更加困惑。因此,这是我收集的:JWT是标准的,有几个实现...因此,我必须选择用于API的实现吗?
?如果可以的话,我可以使用开箱即用的实现,这些实施建议避免重新发明方向盘?作为.NET开发人员,我更有可能使用Asp.Net Identity
,它可以发出并验证我相信的JWT(如果我错了,请纠正我)。那是最好的方法吗?看起来很重...任何开源项目呢?
我真的不想滚动自己的实施...寻找有关该主题的任何建议。
JWT只是标准RFC 75 19,具有许多实现。
有关实施列表,请查看https://jwt.io/(您可以按语言过滤),有三个.NET实现,因此您无需(也不应该)自己滚动。<</p>
签名JWT简介(JWS)
签名的JWT包括一个基本64 URL安全编码签名作为第三个组件。用于生成签名的算法在标题中指示。
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开始的摘录 - 签名JWT(JWS)。最初的作者是内特·贝贝蒂尼(Nate Barbettini)。归因细节可以在贡献者页面上找到。该来源是根据CC BY-SA 3.0许可的,可以在文档档案中找到。参考主题ID:5213和示例ID:18559。