什么是json web token (jwt) 这个一个协议安全的标准,用来保证数据的一致性及安全性的。 这次说下加jwt的非对称加密方式.   注: rsa的性能很烂…


先聊聊,咱们常用的对于http api加密的方式有哪几种? 

文章的原文地址是, http://xiaorui.cc 

另外还有一篇python jwt的详细文章

地址 http://xiaorui.cc/2016/01/24/%E5%9F%BA%E4%BA%8Epython%E7%9A%84json-web-tokensjwt%E5%8A%A0%E5%AF%86%E8%AE%A4%E8%AF%81%E5%AE%9E%E7%8E%B0/

第一个是使用在HTTP规范中的Basic Auth,这个配置也是相当的简单,在nginx端针对路由location配置下就可以用了 。原理上,客户端必须在每个子响应是附加它们的凭证(credenbtial),包括他的账号和密码 。如果这些凭证通过了,那么用户的信息就会被传递到服务端应用。 后来随着nginx lua的发展,更多人喜欢在lua层面做权限的控制,比如http请求加入header头,加入cookie等。 

第二个方便是客户端从服务端签收一个加密的key,然后自己通过一定的算法组合加密数据,服务端会根据你的来源解析key。 

第三种是OAuth(或者OAuth2)。为第三方的认证所设计,但是更难配置。至少在服务器端更难。

第四种,TOKEN的机制。 在各种客户端上每次都让用户提交用户名和密码,这有些不合理的。 通常的情况是客户端通过一些可靠信息和服务器交换取token,这个token作为客服端再次请求的权限钥匙,当然token也是存在有效时间控制的。 Token通常比密码更加长而且复杂。那么一旦获得了token,在每次调用API的时候都要附加上它。这仍然比直接发送账户和密码更加安全,哪怕是HTTPS。
把token想象成一个安全的护照。你在一个安全的前台验证你的身份(通过你的用户名和密码),如果你成功验证了自己,你就可以取得这个。当你走进大楼的时候(试图从调用API获取资源),你会被要求验证你的护照,而不是在前台重新验证。

第五种,jwt方法,JWT是一段被base64url编码过的字符序列,并用点号分隔。它由三部分组成,头部header、载荷playload与签名sign。 服务端和客户端都可以通过secret_key来识别信息是否被串改过.

这里的secert_key是用rsa的方法,你也可以自定义key。

这是更详细的用法,我们可以把公钥和密钥放到数据库里面存储,可以通过认证来签发证书 。  

总结,我这对于jwt就说这么多了。 如果不想使用这种rsa的非对称方式,可以直接写死secret key.




对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

基于python的json web tokens(jwt)加密认证实现

《使用python来实现json web tokens加密协议》 这两天是北京很冷,远在南方的广东都在下雪,这个冷可想而知了…   正体开始,我自己在尝试写...

阅读全文

发表评论