基于非对称密钥的http api认证

asymmetric_jwt_auth的Python项目详细描述


https://img.shields.io/pypi/v/asymmetric_jwt_auth.svghttps://travis-ci.org/crgwbr/asymmetric-jwt-auth.svg

什么?

这是一个库,用于处理 服务器到服务器api请求。它使用rsa public实现了这一点/ 私钥对。

为什么?

使用用户名和密码的标准模式对于 用户到服务器的请求,但缺少服务器到服务器的请求 应用。在这些情况下,因为密码不需要 让用户难忘的是,我们可以使用更安全的东西:不对称 密钥加密。这样做的好处是密码永远不会 实际发送到服务器。

怎么做?

客户端计算机生成公钥/私钥对。这个 然后为服务器计算机提供公钥,它可以存储 以任何它喜欢的方式。当这个库与django一起使用时, 提供用于存储与内置用户关联的公钥的模型 物体。当发出请求时,客户机创建一个jwt,包括 有人声称并用私钥签名。收到后, 服务器验证使用公钥的声明以确保颁发者 是他们声称的合法身份。

索赔(由客户发出)包括以下组件:的用户名 正在尝试身份验证的用户,当前的unix时间戳, 以及随机生成的nonce。例如:

{
    "username": "guido",
    "time": 1439216312,
    "nonce": "1"
}

时间戳必须在服务器时间和 nonce在给定的时间戳和用户内必须是唯一的。在其他方面 如果一个用户的多个请求是在同一个 其次,现在必须改变。由于这两个因素 可多次使用,从而防止重播攻击。

要发出经过身份验证的请求,客户端必须生成jwt 遵循上述格式并将其作为http授权包括在内 标题格式如下:

Authorization: JWT <my_token>

important note:声明是not加密的,仅签名的。 另外,签名只能防止声明被篡改 使用或重复使用。请求的其他部分仍然容易受到 捣乱。因此,这不能替代在 传输层。

完整文档https://asymmetric-jwt-auth.readthedocs.io

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
面向java语句的方法与面向表达式的方法   密码学如何在java中为json对象签名?   是否可以通过java程序知道给定卡夫卡消费群体的消费偏移量?   打印字符时出现java未知问号   java为JFrame设置背景色   在ubuntu中检查java版本时linux权限被拒绝   如何用java创建xml模式   java无法在远程服务器上运行Vaadin应用程序   java智能垃圾收集?   java如何在SpringMVC中设置缓存头?   在unix计算机上运行java应用程序a:>签名以输入内容   Java、Apache Commons配置XML属性   使用ArrayList调用Java未经检查的方法   在文本文件中查找并替换单词(Java GUI)   java Android Studio无法检测到JDK7或更新版本   java从socket的有效负载获取事件消息   安卓中java调用子类方法   java如何通过点击超链接来运行jar文件(Firefox)