Простой способ преобразования объекта JWK Azure в объект * 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)
Я думаю, что есть функция import_key
из jwcrypto.jwk.JWK
, для которой требуется dict
в качестве параметра для генерации * JVK-объекта jwcrypto
после просмотра исходного кода Azure KeyVault SDK и jwcrypto
для Python.
В соответствии с исходным кодом 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
для создания jwcrypto
объекта JWK с помощью функции 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)