簡體   English   中英

Python3:Azure Key Vault Keys,創建 RAS 密鑰:TypeError

[英]Python3 : Azure Key Vault Keys, creating RAS key : TypeError

以下示例中:

https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-keys

每當我運行以下代碼時:

rsa_key = key_client.create_rsa_key("rsa-key-demo", size=2048)
print(rsa_key.name)
print(rsa_key.key_type)

密鑰將在我的 Azure keyVult 中創建,但是我總是收到以下錯誤:

回溯(最近一次調用):文件“c:/Users/user/Desktop/azure_keyValut_demo.py”,第 152 行,在 rsa_key = key_client.create_rsa_key("rsa-key-demo", size=2048) 文件“C: \\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\azure\\core\\tracing\\decorator.py”,第 62 行,在 wrapper_use_tracer 中 return func(*args, **kwargs) # 輸入:忽略文件“C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\azure\\keyvault\\keys_client.py”,第 131 行,在 create_rsa_key 中 return self.create_key(name, key_type=" RSA-HSM" if hsm else "RSA", **kwargs) 文件 "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\azure\\core\\tracing\\decorator.py" , line 62, in wrapper_use_tracer return func(*args, **kwargs) # type: ignore File "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\azure\\keyvault\\keys_client .py”,第 96 行,在 create_key **kwargs 文件“C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\azure\\keyvault\\keys_shared_gener ated\\v7_0\\operations_key_vault_client_operations.py”,第 96 行,在 create_key deserialized = self._deserialize('KeyBundle', response) 文件“C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages \\msrest\\serialization.py”,第 1180 行,在調用 data = self._unpack_content(response_data, content_type) 文件“C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\msrest\\”中serialization.py", line 1334, in unpack_content return json.loads(data) File "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python36\\lib\\json_init.py", line 348, in loading 'not {!r}'.format(s.class.name)) TypeError: the JSON object must be str, bytes or bytearray, not 'method'


我不太明白為什么會拋出該異常。

我在 stackoverflow 上發現了這個,但仍然無法理解發生了什么:

為什么python3不會加載這個json字符串?


代碼運行成功,Python2.7 沒有問題

所有關鍵操作(創建、刪除、獲取)都會拋出異常

它也發生在所有加密操作中

根據我的測試,如果我們使用msrest下版本0.6.x,我們會得到錯誤。 我的測試步驟如下

我的requirements.txt

azure-common==1.1.23
azure-core==1.1.1
azure-identity==1.1.0
azure-keyvault-keys==4.0.0
certifi==2019.11.28
cffi==1.13.2
chardet==3.0.4
cryptography==2.8
idna==2.8
isodate==0.6.0
msal==1.0.0
msal-extensions==0.1.3
msrest==0.5.5
oauthlib==3.1.0
portalocker==1.5.2
pycparser==2.19
PyJWT==1.7.1
pywin32==227
requests==2.22.0
requests-oauthlib==1.3.0
six==1.13.0
urllib3==1.25.7

我的代碼

from azure.identity import ClientSecretCredential
from azure.keyvault.keys import KeyClient

tenant_id=''
client_id=''
client_secret=''
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
client = KeyClient("https://testkey08.vault.azure.net/", credential)

key = client.create_rsa_key("rsa-key-demo", size=2048)
print(key.name)
print(key.key_type)

在此處輸入圖片說明

所以,請更新merest到0.6.x. 詳細步驟如下

  1. 創建項目
python -m venv mytestenv # Might be "python3" or "py -3.6" depending on your Python installation
cd mytestenv
source bin/activate      # Linux shells (Bash, ZSH, etc.)
scripts\activate         # Windows shells (PowerShell, CMD)
  1. 安裝 SDK 我的requirements.txt
azure-common==1.1.23
azure-core==1.1.1
azure-identity==1.1.0
azure-keyvault-keys==4.0.0
certifi==2019.11.28
cffi==1.13.2
chardet==3.0.4
cryptography==2.8
idna==2.8
isodate==0.6.0
msal==1.0.0
msal-extensions==0.1.3
msrest==0.6.10
oauthlib==3.1.0
portalocker==1.5.2
pycparser==2.19
PyJWT==1.7.1
pywin32==227
requests==2.22.0
requests-oauthlib==1.3.0
six==1.13.0
urllib3==1.25.7
xlrd==1.2.0

pip install -r requirements.txt
  1. 代碼
from azure.identity import ClientSecretCredential
from azure.keyvault.keys import KeyClient

tenant_id=''
client_id=''
client_secret=''
credential = ClientSecretCredential(tenant_id, client_id, client_secret)
client = KeyClient("https://testkey08.vault.azure.net/", credential)

key = client.create_rsa_key("rsa-key-demo", size=2048)
print(key.name)
print(key.key_type)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM