基于非对称密钥的HTTP API认证
项目描述
是什么?
这是一个用于处理服务器到服务器API请求认证的库。它使用RSA公钥/私钥对来实现这一功能。
为什么?
使用用户名和密码的标准模式对用户到服务器的请求工作得很好,但对于服务器到服务器应用程序来说却不够。在这些场景中,由于密码不需要用户记住,我们可以使用更安全的非对称密钥加密。这有一个优点,即密码永远不会实际发送到服务器。
如何?
客户端机器生成一个公钥/私钥对。然后,服务器机器将公钥提供给它,并可以选择任何它喜欢的方式存储公钥。当此库与Django一起使用时,它提供了一个模型来存储与内置用户对象关联的公钥。当发起请求时,客户端创建一个包含多个声明的JWT,并使用其私钥对其进行签名。收到后,服务器使用公钥验证声明,以确保发行者确实是他们声称的那个人。
声明(由客户端发出)包括以下组件:尝试进行身份验证的用户的用户名、当前的Unix时间戳和一个随机生成的nonce。例如
{ "username": "guido", "time": 1439216312, "nonce": "1" }
时间戳必须与服务器时间的±20秒内,nonce必须在给定的时间戳和用户内是唯一的。换句话说,如果用户在同一秒内发起多个请求,nonce必须更改。由于这两个因素,令牌只能使用一次,从而防止重放攻击。
要发出一个经过身份验证的请求,客户端必须按照上述格式生成JWT,并将其作为以下格式的HTTP授权头包含在内
Authorization: JWT <my_token>
重要提示:声明未加密,仅签名。此外,签名只能防止声明被篡改或重用。请求的其余部分仍然容易受到篡改。因此,这并不是运输层使用SSL的替代品。
项目详情
关闭
asymmetric_jwt_auth-1.0.1.tar.gz的散列值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5c6afe4fed67c37dbffca48070aa5eb1d91397501fcb74c573c391628fbeca78 |
|
MD5 | dca40c2af1458a2ad47eb82f49b28c52 |
|
BLAKE2b-256 | 0537ca13d95a4760dc81fd55d471482234a7fa37101ab7bb8b1617b2403c0b4d |
关闭
asymmetric_jwt_auth-1.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e692d92bade3e0af6532013841d43a8fefda47acf35c6b8b0050fa30d73fe6ff |
|
MD5 | d08276b4b0036ec2107a4eb50d2f66ec |
|
BLAKE2b-256 | 0943ee3cb83e0cdda38fe71ed57e69508a8c71ce1fc629dc1b4779c47d46a3d3 |