将 Azure JWK 对象转换为 JWK 对象的简单方法jwcrypto
如下面的代码所示。
import jwcrypto.jwk as jwk
azureJwkObj = .... # your Azure JWK object
azureJwkDict = azureJwkObj.__dict__
jwcryptoJwkObject = jwk.JWK(**azureJwkDict)
下面也一样。
jwcryptoJwkObject = jwk.JWK().import_key(**azureJwkDict)
在我查看了 Azure KeyVault SDK 和Python的源代码后,我认为有一个 as 参数所需的函数import_key
来生成JWK 对象。jwcrypto.jwk.JWK
dict
jwcrypto
jwcrypto
根据json_web_key_py3.py
Azure KeyVault SDK 和jwk.py
的源代码jwcrypto
,我尝试生成一个jwcrypto
JWK 对象,通过下面的代码查看它的结构。
from jwcrypto import jwk
key = jwk.JWK.generate(kty='oct', size=256)
print(key.__dict__)
# The output is {'_params': {'kty': 'oct'}, '_key': {'k': 'HJUk1CeudZ2Tur0fzHnOi-1U9UjxaUjClRW8TvqFakI'}, '_unknown': {}}
然后,我尝试使用下面的代码将 Azure JWK 对象转换为通过函数jwcrypto.jwk.JWK.import_key
创建JWK 对象所需的字典。jwcrypto
import_key
import jwcrypto.jwk as jwk
azureJwkObj = .... # your Azure JWK object
azureJwkDict = azureJwkObj.__dict__
_params = {k: v for k, v in azureJwkDict.items() if k in jwk.JWKParamsRegistry.keys()}
kty = _params.get('kty', None)
_key = {k: v for k, v in azureJwkDict.items() if k in jwk.JWKValuesRegistry[kty].keys()}
args = {'_params': _params, '_key': _key, '_unknown': {}}
jwcryptoJwkObject = jwk.JWK.import_key(args)