JWT的基本概念
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
External Vs Internal
By Value Vs By Beference
JWT
is by valuesession ID
is by reference
JWT is encoded, not encrypted.
JWT can vs session ID, not vs cookie
JWT是经过base64编码的,并非加密过,如果想加密payload中的内容,需要手动加密。如果不加密,一定要部署在HTTPS之上,否则都会是明文。
JWT可以用来替代seesionID,它可以被存储在Cookie中。
JWT第三部分的签名有2中方式,一种是HASH,一种是PKI,如果是多个分布式为服务的化,用PKI校验比较方便,多个校验服务使用公钥进行校验。
JWT相关的库
github里代码质量层次不齐,选用库前要仔细甄别。
Knock for Rails
Knock 针对Rails应用封装了ruby-JWT
gem。可以定制payload
字段和auth字段,不单单是email
。
- 用户携带用户名密码,请求获取token,token中包含user.id和过期时间。
- 用户每次请求都携带token,服务器端根据token中的user.id信息确认用户。
deer-api
这是我在Revel
框架基础上开发的带有JWT功能的API服务。
https://github.com/netqyq/deer-api
Resources
https://JWT.io/ https://github.com/auth0/go-JWT-middleware https://github.com/nsarno/knock http://openid.net/ https://www.youtube.com/watch?v=tj9KDnBSn4E https://github.com/coreos/dex