我正在尝试在Azure中使用以下Python代码进行授权:
from os import environ as env
from azure.identity import ClientSecretCredential
from azure.keyvault.secrets import SecretClient
import json
with open(r'C:Projectcred.json') as data_file:
data = json.load(data_file)
subscription_id = data["subscription_id"]
TENANT_ID = data["tenant_id"]
CLIENT_ID = data["client_id"]
CLIENT_SECRET = data["client_secret"]
KEYVAULT_NAME = env.get("myapp")
KEYVAULT_URI = f"https://{KEYVAULT_NAME}.scm.azurewebsites.net"
_credentials = ClientSecretCredential(
tenant_id=TENANT_ID,
client_id=CLIENT_ID,
client_secret=CLIENT_SECRET
)
_sc = SecretClient(vault_url=KEYVAULT_URI, credential=_credentials)
DEMO_DB_USERNAME = _sc.get_secret("DemoUserName").value
DEMO_DB_PASSWORD = _sc.get_secret("DemoUserPassword").value
但是我得到错误:
azure.core.exceptions。ClientAuthenticationError:操作返回一个无效的状态'Unauthorized'
请帮助我了解我错在哪里。我想我在导入环境时弄错了。也许这是不需要的,有任何其他的方式来连接到Azure和我自己的帐户。主要目标是到达受Azure登录/密码凭证保护的web应用程序。目标是使用secret_id/client_id/tenant_id NOT登录名和密码通过授权。谢谢。
要使用python对Azure进行身份验证,请确保您已在Azure AD中注册了一个应用程序,并提供了上述详细信息。
然后安装名为;
的包pip install azure-identity
例如,在安装之后,您可以在应用程序中使用DefaultAzureCredential
;
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
# Acquire a credential object
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url="https://<my_account_name>.blob.core.windows.net",
credential=credential)
更多信息请参考以下链接:-
- 微软文档|使用Azure AD B2C在样例Python web应用中配置身份验证,演练:Python应用与Azure服务的集成身份验证