教程¶
本章节提供了关于如何开始使用 joserfc
并进行 JWT 编码和解码的快速概述。
JWT 的编码与解码¶
>>> from joserfc import jwt
>>> from joserfc.jwk import OctKey
>>> key = OctKey.import_key("secret")
>>> encoded_jwt = jwt.encode({"alg": "HS256"}, {"key": "value"}, key)
>>> encoded_jwt
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ2YWx1ZSJ9.FG-8UppwHaFp1LgRYQQeS6EDQF7_6-bMFegNucHjmWg'
>>> token = jwt.decode(encoded_jwt, key)
>>> token.header
{'alg': 'HS256', 'typ': 'JWT'}
>>> token.claims
{'key': 'value'}
>>> claims_requests = jwt.JWTClaimsRegistry()
>>> claims_requests.validate(token.claims)
您可以在下一章节中了解 JSON Web Token 的详细信息。
JWK 的导入与导出¶
>>> from joserfc.jwk import RSAKey
>>> rsa_key = RSAKey.generate_key(512)
>>> rsa_key.as_pem(private=True)
b'-----BEGIN PRIVATE KEY-----\n....'
>>> rsa_key.as_pem(private=False)
b'-----BEGIN PUBLIC KEY-----\n...'
>>> rsa_key.as_dict(private=False)
{
'n': 's6DoAL_A4EZ9pQFemuFtUPxjuPxyZC_1_...',
'e': 'AQAB', 'kty': 'RSA', 'kid': 'Y9-Lx9yk...'
}
>>> from joserfc.jwk import RSAKey
>>> f = open("your-rsa-key.pem")
>>> pem_data = f.read()
>>> pem_data
'-----BEGIN PUBLIC KEY-----\n...'
>>> rsa_key = RSAKey.import_key(pem_data)
>>> rsa_key.as_pem()
b'-----BEGIN PUBLIC KEY-----\n...'
您可以在下一章节中了解 JSON Web Key 的详细信息。
深入了解¶
接下来,详细学习下面的每个模块。
JSON Web Key
学习如何使用 OctKey
、RSAKey
、ECKey
、OKPKey
以及 JSON Web Key Set。
JSON Web Token
JSON Web Token (JWT) 本质上是一种 JSON Web Signature 或者 JSON Web Encryption。
JSON Web Signature
通常我们见到的 JSON Web Token 都是基于 JWS 的紧凑序列化编码。
JSON Web Encryption
JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.