用于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适用于大多数要运行的应用程序 在蔚蓝的天空中。它作为服务主体或托管标识进行身份验证, 根据其环境,可以配置为在本地 开发和部署到云端时。

要作为服务主体进行身份验证,请在环境中提供配置 变量,如下一节所述。

作为托管标识进行身份验证不需要配置,但需要 需要平台支持。见 托管标识文档 了解更多信息。

环境变量

DefaultAzureCredentialEnvironmentCredential可以配置为 环境变量。每种类型的身份验证都需要特定的值 变量:

保密服务负责人 < Buff行情><表><广告>变量名 值< /广告><正文>azure_客户端ID服务负责人的应用程序IDazure租户id主体的azure活动目录租户的IDazure_客户端机密服务负责人的客户机密之一

有证书的服务负责人 < Buff行情><表><广告>变量名 值< /广告><正文>azure_客户端ID服务负责人的应用程序IDazure租户id主体的azure活动目录租户的IDazure_客户端证书路径包含私钥(无密码)的PEM编码证书文件的路径

用户名和密码 < Buff行情><表><广告>变量名 值< /广告><正文>azure_客户端IDazure活动目录应用程序的IDazure\u用户名用户名(通常是电子邮件地址)azure\u密码该用户的密码

按上述顺序尝试配置。例如,如果两者都是 azure_client_secretazure_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 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
  • 采用了msal0.4.1
  • python 2.7的新依赖项:mock

新功能:

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身份验证终结点。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Android中维护应用程序状态   javajavacc:如何指定在特定上下文中需要哪些令牌?   java为什么改型会在重新加载数据时设置以前的响应?   java如何将键转换为字符串,反之亦然   java JDOM解析器插入#固定手动属性   java按元素对XML数据排序?   java Android中有哪些哈希算法?   java为什么使用可选返回类型进行单元测试失败?   Gson和argonauts使用Gson将javascript数组转换为json字符串并转换为javapojo时遇到的问题。试图让我的结构正确   java中的空格   java SQLite高分,草率IndexOutofBounds Android   使用Spring OAUTH2的java Make客户端   netbeans如何在java中创建一个JPopupMenu,其中包含一个要复制文本的项