教程

本章节提供了关于如何开始使用 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

学习如何使用 OctKeyRSAKeyECKeyOKPKey 以及 JSON Web Key Set。

JSON Web Key
JSON Web Token

JSON Web Token (JWT) 本质上是一种 JSON Web Signature 或者 JSON Web Encryption

JSON Web Token
JSON Web Signature

通常我们见到的 JSON Web Token 都是基于 JWS 的紧凑序列化编码。

JSON Web Signature
JSON Web Encryption

JSON Web Encryption (JWE) represents encrypted content using JSON-based data structures.

JSON Web Encryption