用于python的Microsoft azure标识库
azure-identit的Python项目详细描述
用于python的azure身份客户端库
azure身份简化了整个azure sdk的身份验证。 它支持使用azure活动目录进行令牌身份验证
此库处于预览状态,当前支持:
源代码 |包(pypi) |API参考文档 |azure活动目录文档
入门
先决条件
- azure订阅
- python 2.7或3.5.3+
- azure活动目录服务主体。如果你需要创建一个 可以使用azure门户,或使用azure cli
安装软件包
使用pip安装azure标识:
pip install azure-identity
使用azure cli创建服务主体
使用此azure cli片段创建/获取 客户端机密凭据。
- 创建服务主体:
az ad sp create-for-rbac -n <your-application-name> --skip-assignment
示例输出:{"appId":"generated-app-ID","displayName":"app-name","name":"http://app-name","password":"random-password","tenant":"tenant-ID"}
- 使用输出设置azure_client_id(appid),azure_client_secret (密码)和(租户) 环境变量
关键概念
凭证
凭证是一个类,它包含或可以获取 服务客户端以验证请求。通过azure sdk服务客户端 接受凭据作为构造函数参数。见 下一步是获取客户端库列表 接受azure身份凭据。
凭据类在azure.identity
命名空间中定义。这些不同
在他们可以验证的azure活动目录标识类型中,以及
配置:
DefaultAzureCredential
managedEntityCredential
环境凭证
clientsecretcredential
认证证书
服务负责人 构造函数参数
devicecodecdential
交互式browsercredential
usernamepasswordcredential
凭据可以链接在一起并依次尝试,直到成功;请参见 链接凭据了解详细信息。
服务主体和托管标识凭据在
python 3.5.3+支持的azure.identity.aio
命名空间。见
有关详细信息,请参见异步凭据示例。异步用户
凭证将成为未来版本的一部分。
DefaultAzureCredential
DefaultAzureCredential
适用于大多数要运行的应用程序
在蔚蓝的天空中。它作为服务主体或托管标识进行身份验证,
根据其环境,可以配置为在本地
开发和部署到云端时。
要作为服务主体进行身份验证,请在环境中提供配置 变量,如下一节所述。
作为托管标识进行身份验证不需要配置,但需要 需要平台支持。见 托管标识文档 了解更多信息。
环境变量
DefaultAzureCredential
和EnvironmentCredential
可以配置为
环境变量。每种类型的身份验证都需要特定的值
变量:
保密服务负责人
< Buff行情><表><广告>变量名
值 < /广告><正文>azure_客户端ID
服务负责人的应用程序ID azure租户id
主体的azure活动目录租户的ID azure_客户端机密
服务负责人的客户机密之一 有证书的服务负责人
< Buff行情><表><广告>变量名
值 < /广告><正文>azure_客户端ID
服务负责人的应用程序ID azure租户id
主体的azure活动目录租户的ID azure_客户端证书路径
包含私钥(无密码)的PEM编码证书文件的路径 用户名和密码
< Buff行情><表><广告>变量名
值 < /广告><正文>azure_客户端ID
azure活动目录应用程序的ID azure\u用户名
用户名(通常是电子邮件地址) azure\u密码
该用户的密码
azure_客户端ID
azure租户id
azure_客户端机密
azure_客户端ID
azure租户id
azure_客户端证书路径
用户名和密码
< Buff行情><表><广告>变量名
值 < /广告><正文>azure_客户端ID
azure活动目录应用程序的ID azure\u用户名
用户名(通常是电子邮件地址) azure\u密码
该用户的密码
azure_客户端ID
azure\u用户名
azure\u密码
按上述顺序尝试配置。例如,如果两者都是
azure_client_secret
和azure_client_certificate_path
具有值,
将使用azure\u客户端机密
。
示例
使用DefaultAzureCredential进行身份验证
此示例演示如何从
azure存储blob
库使用
DefaultAzureCredential
fromazure.identityimportDefaultAzureCredentialfromazure.storage.blobimportBlobServiceClient# The default credential first checks environment variables for configuration as described above.# If environment configuration is incomplete, it will try managed identity.credential=DefaultAzureCredential()client=BlobServiceClient(account_url=<yourstorageaccounturl>,credential=credential)
在开发机器上执行此操作首先需要
[配置环境][环境变量]具有适当的值
为您的服务负责人。
< H2> Authen使用客户端机密验证服务主体:
此示例演示如何从
azure存储blob
库使用
DefaultAzureCredential
fromazure.identityimportDefaultAzureCredentialfromazure.storage.blobimportBlobServiceClient# The default credential first checks environment variables for configuration as described above.# If environment configuration is incomplete, it will try managed identity.credential=DefaultAzureCredential()client=BlobServiceClient(account_url=<yourstorageaccounturl>,credential=credential)
在开发机器上执行此操作首先需要 [配置环境][环境变量]具有适当的值 为您的服务负责人。
< H2> Authen使用客户端机密验证服务主体:此示例演示如何从
azure keyvault keys
库使用
clientsecretcredential
fromazure.identityimportClientSecretCredentialfromazure.keyvault.keysimportKeyClientcredential=ClientSecretCredential(client_id,client_secret,tenant_id)client=KeyClient(vault_url=<yourvaulturl>,credential=credential)
使用证书验证服务主体:
此示例演示如何从
azure keyvault secrets
库使用
认证证书
fromazure.identityimportCertificateCredentialfromazure.keyvault.secretsimportSecretClient# requires a PEM-encoded certificate with private key, not protected with a passwordcert_path="/app/certs/certificate.pem"credential=CertificateCredential(client_id,tenant_id,cert_path)client=SecretClient(vault_url=<yourvaulturl>,credential=credential)
链接凭据:
chainedtokencredential类链接要尝试的多个凭据实例
认证时按顺序。下面的示例演示如何创建
将尝试使用托管标识进行身份验证的凭据,然后
如果托管标识在
当前环境。此示例演示如何对eventhubclient进行身份验证。
从azure eventhubs
客户端库。
fromazure.eventhubimportEventHubClientfromazure.identityimportChainedTokenCredential,ClientSecretCredential,ManagedIdentityCredentialmanaged_identity=ManagedIdentityCredential()client_secret=ClientSecretCredential(client_id,client_secret,tenant_id)# when an access token is requested, the chain will try each# credential in order, stopping when one provides a tokencredential_chain=ChainedTokenCredential(managed_identity,client_secret)# the ChainedTokenCredential can be used anywhere a credential is requiredclient=EventHubClient(host,event_hub_path,credential)
异步凭据:
这个库包含了python 3.5+支持的异步api。使用异步
在azure.identity.aio
中的凭据,必须首先安装异步传输,
例如aiohttp
。见
azure核心文档
了解更多信息。
此示例演示如何从
azure keyvault secrets
使用异步凭据。
# all credentials have async equivalents supported on Python 3.5.3+fromazure.identity.aioimportDefaultAzureCredentialdefault_credential=DefaultAzureCredential()# async credentials have the same API and configuration their synchronous counterparts,fromazure.identity.aioimportClientSecretCredentialcredential=ClientSecretCredential(client_id,client_secret,tenant_id)# and are used with async Azure SDK clients in the same wayfromazure.keyvault.aioimportSecretClientclient=SecretClient(vault_url,credential)
故障排除
一般
凭据失败时将引发azure.core.exceptions.clientauthenticationerror
验证。clientauthenticationerror
有一个消息
属性
描述身份验证失败的原因。当由chainedtokencredential引发时,
该消息从链中的每个凭据收集错误消息。
有关处理azure活动目录错误的详细信息,请参阅 azure活动目录 错误代码文档
下一步
客户端库支持
目前以下客户端库支持使用azure进行身份验证 身份证明。您可以了解更多关于它们的信息,并找到其他 有关使用这些客户机库以及示例的文档,请访问链接 下面,
提供反馈
如果您遇到错误或有建议,请 打开问题。
贡献
这个项目欢迎大家提出意见和建议。大多数捐款需要 你同意一个贡献者许可协议(cla),声明你有 有权,而且实际上有权,授予我们使用您的捐款的权利。 有关详细信息,请访问https://cla.microsoft.com" rel="nofollow">https://cla.microsoft.com
当您提交拉取请求时,cla bot将自动确定 你需要提供一个cla并适当地装饰pr(例如,标签, 评论)只需遵循机器人提供的说明。你只会 需要使用我们的CLA在所有回购协议中执行此操作。
这个项目采用了 微软开源行为准则。 有关详细信息,请参见 行为准则常见问题解答 或与任何 其他问题或评论。
发布历史记录
1.0.0b2(2019-08-05)
中断更改:
- 从公共api中删除了
azure.core.configuration
,以准备 改进了配置API。staticcreate_config
方法已重命名\u创建配置
,并将在以后的版本中删除。
依赖关系更改:
- 采用了azure核心1.0.0b2
- 如果以后要还原到azure identity 1.0.0b1或其他azure sdk
需要azure core 1.0.0b1的库,您需要
pip卸载azure core
- 如果以后要还原到azure identity 1.0.0b1或其他azure sdk
需要azure core 1.0.0b1的库,您需要
- 采用了msal0.4.1
- python 2.7的新依赖项:mock
新功能:
- 添加了用于验证用户的凭据:
devicecodecdential
,交互式browsercredential
,usernamepasswordcredential
- 这些凭据的异步版本将在以后的版本中添加
1.0.0b1(2019-06-28)
版本1.0.0b1是我们创建用户友好型 以及用于azure sdk客户端库的pythonic身份验证api。为了更多 有关其他azure sdk库的预览版本的信息,请访问 https://aka.ms/azure-sdk-preview1-python
此版本支持服务主体和托管身份验证。 见 文档 更多细节。用户身份验证将在即将进行的预览中添加 释放.
此版本仅支持全局azure活动目录租户,即 使用https://login.microsoftonline.com" rel="nofollow">https://login.microsoftonline.com身份验证终结点。