使用 Azure Python SDK,我想KeyVaultClient
使用该get_client_from_auth_file
方法返回一个,以便在不通过KeyVaultManagementClient
.
根据文档,似乎可以从任何 SDK 客户端类创建客户端。
我能够做到这一点:
from azure.common.client_factory import get_client_from_auth_file
from azure.mgmt.keyvault import KeyVaultManagementClient
_kv_mgmt_client = get_client_from_auth_file(KeyVaultManagementClient)
但不是这个:
from azure.common.client_factory import get_client_from_auth_file
from azure.keyvault import KeyVaultClient
_kv_client = get_client_from_auth_file(KeyVaultClient)
这是错误消息:TypeError: __init__() got an unexpected keyword argument 'base_url'
更新:
经审查,get_client_from_auth_file
返回多个结果,包括base_url
,因此以下帮助函数解析TypeError
.
class KeyVaultClientHelper:
def __init__(self, credentials, **kwargs):
self._credentials = credentials
并且 KeyVaultClient 会成功,直到它尝试获取机密并返回Unauthorized
。
helper = get_client_from_auth_file(KeyVaultClientHelper)
client = KeyVaultClient(helper._credentials)
print(client.get_secret("http://my-vault-url...", "MY-KEY", '').value))
但是,我成功地使用ServicePrincipalCredential
具有相同身份验证文件的 获取秘密。