跳转到主要内容

Python的Microsoft Azure身份库

项目描述

Azure Identity客户端库

Azure Identity库为Azure SDK提供Microsoft Entra ID (以前称为Azure Active Directory)令牌身份验证支持。它提供一组TokenCredential/SupportsTokenInfo实现,可用于构建支持Microsoft Entra令牌身份验证的Azure SDK客户端。

源代码 | 包(PyPI) | 包(Conda) | API参考文档 | Microsoft Entra ID文档

入门

安装包

使用pip安装Azure Identity

pip install azure-identity

先决条件

  • 一个Azure 订阅
  • Python 3.8或较新的Python 3版本(此库不支持已停止维护的版本)

在本地开发期间进行身份验证

当在本地调试和执行代码时,开发者通常使用自己的账户进行身份验证,以调用Azure服务。Azure Identity库支持通过开发者工具进行身份验证,从而简化本地开发。

通过Visual Studio Code进行身份验证

使用Visual Studio Code的开发者可以使用Azure Account扩展通过编辑器进行身份验证。使用DefaultAzureCredentialVisualStudioCodeCredential的应用程序可以在本地运行时使用此账户进行应用程序的身份验证调用。

要在Visual Studio Code中进行身份验证,请确保已安装Azure Account扩展。安装后,打开命令面板并运行Azure: 登录命令。

这是一个已知问题,即VisualStudioCodeCredentialAzure Account扩展版本高于0.9.11时不起作用。该问题的长期解决方案正在开发中。同时,请考虑通过Azure CLI进行身份验证

通过Azure CLI进行身份验证

DefaultAzureCredentialAzureCliCredential可以作为已登录到Azure CLI的用户进行身份验证。要登录到Azure CLI,请运行az login。在默认网络浏览器上,Azure CLI会启动浏览器以进行用户身份验证。

如果没有默认浏览器可用,az login将使用设备代码身份验证流程。此流程也可以通过运行az login --use-device-code手动选择。

通过Azure开发者CLI进行身份验证

在IDE外编码的开发者也可以使用Azure开发者CLI进行身份验证。使用DefaultAzureCredentialAzureDeveloperCliCredential的应用程序可以在本地运行时使用此账户进行应用程序的身份验证调用。

要使用Azure开发者CLI进行身份验证,请运行命令azd auth login。对于在默认网络浏览器上运行的用户,Azure开发者CLI会启动浏览器以进行用户身份验证。

对于没有默认网络浏览器的系统,azd auth login --use-device-code命令使用设备代码身份验证流程。

关键概念

凭据

凭据是一个包含或可以获取服务客户端请求身份验证所需数据的类。Azure SDK中的服务客户端在构建时接受凭据实例,并使用该凭据进行请求身份验证。

Azure Identity库专注于OAuth身份验证与Microsoft Entra ID。它提供各种可以获取Microsoft Entra访问令牌的凭据类。请参阅凭据类部分,以获取此库的凭据类列表。

DefaultAzureCredential

DefaultAzureCredential适用于大多数将在Azure中运行的应用程序,因为它结合了常见的生产凭据和开发凭据。DefaultAzureCredential会尝试以下机制进行身份验证,顺序如下,直到成功为止

注意:DefaultAzureCredential旨在通过处理具有合理默认行为的常见场景来简化库的入门。希望获得更多控制或其场景不由默认设置满足的开发者应使用其他凭据类型。

DefaultAzureCredential authentication flow

  1. 环境 - DefaultAzureCredential 通过 环境变量 读取指定的账户信息并使用它进行身份验证。
  2. 工作负载身份 - 如果应用程序部署到启用了托管身份的 Azure Kubernetes 服务,DefaultAzureCredential 将使用它进行身份验证。
  3. 托管身份 - 如果应用程序部署到启用了托管身份的 Azure 主机,DefaultAzureCredential 将使用它进行身份验证。
  4. Azure CLI - 如果用户通过 Azure CLI 的 az login 命令登录,DefaultAzureCredential 将以该用户身份进行身份验证。
  5. Azure PowerShell - 如果用户通过 Azure PowerShell 的 Connect-AzAccount 命令登录,DefaultAzureCredential 将以该用户身份进行身份验证。
  6. Azure 开发者 CLI - 如果开发者通过 Azure 开发者 CLI 的 azd auth login 命令进行身份验证,DefaultAzureCredential 将使用该账户进行身份验证。
  7. 交互式浏览器 - 如果启用,DefaultAzureCredential 将通过默认浏览器与用户进行交互式身份验证。此凭据类型默认是禁用的。

续传策略

从版本 1.14.0 开始,DefaultAzureCredential 尝试使用所有开发凭据进行身份验证,直到成功,而不考虑之前开发凭据遇到的任何错误。例如,开发凭据可能会尝试获取令牌并失败,因此 DefaultAzureCredential 将继续到流中的下一个凭据。已部署的服务凭据如果在尝试获取令牌时无法获取,将通过抛出异常来停止流。在版本 1.14.0 之前,如果令牌检索失败,开发凭据会停止身份验证流程,但现在不再是这种情况。

这允许在具有可预测已部署行为的条件下尝试机器上的所有开发凭据。

关于 VisualStudioCodeCredential 的说明

由于一个 已知问题VisualStudioCodeCredential 已从 DefaultAzureCredential 令牌链中删除。在未来的版本中解决该问题后,此更改将得到恢复。

示例

以下提供了以下示例

使用 DefaultAzureCredential 进行身份验证

有关如何配置环境以使用 DefaultAzureCredential 的更多详细信息,请参阅类的 参考文档

此示例演示了使用 DefaultAzureCredentialazure-storage-blob 库对 BlobServiceClient 进行身份验证。

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

default_credential = DefaultAzureCredential()

client = BlobServiceClient(account_url, credential=default_credential)

启用 DefaultAzureCredential 的交互式身份验证

默认情况下,DefaultAzureCredential 中禁用了交互式身份验证,可以通过关键字参数启用。

DefaultAzureCredential(exclude_interactive_browser_credential=False)

启用后,如果没有其他凭据可用,DefaultAzureCredential 将回退到通过系统默认网页浏览器进行交互式身份验证。

DefaultAzureCredential 指定用户分配的托管身份

许多 Azure 主机允许分配用户分配的托管身份。要配置 DefaultAzureCredential 以身份验证用户分配的托管身份,请使用 managed_identity_client_id 关键字参数。

DefaultAzureCredential(managed_identity_client_id=client_id)

或者,将环境变量 AZURE_CLIENT_ID 设置为该身份的客户端 ID。

使用 ChainedTokenCredential 定义自定义身份验证流程

DefaultAzureCredential 通常是最快开始为 Azure 开发应用程序的方法。对于更复杂的情况,ChainedTokenCredential 将多个凭据实例链接起来,在身份验证时按顺序尝试。它依次尝试每个凭据,直到提供一个令牌或由于错误而无法身份验证。

以下示例演示了创建一个凭据,该凭据首先尝试使用托管标识进行身份验证。当托管标识不可用时,凭据将回退到通过 Azure CLI 进行身份验证。此示例使用来自azure-eventhub客户端库的EventHubProducerClient

from azure.eventhub import EventHubProducerClient
from azure.identity import AzureCliCredential, ChainedTokenCredential, ManagedIdentityCredential

managed_identity = ManagedIdentityCredential()
azure_cli = AzureCliCredential()
credential_chain = ChainedTokenCredential(managed_identity, azure_cli)

client = EventHubProducerClient(namespace, eventhub_name, credential_chain)

异步凭据

此库包含一组异步 API。要在azure.identity.aio中使用异步凭据,您必须首先安装一个异步传输,例如aiohttp。有关更多信息,请参阅azure-core 文档

当不再需要时,应关闭异步凭据。每个异步凭据都是一个异步上下文管理器,并定义了一个异步的close方法。例如

from azure.identity.aio import DefaultAzureCredential

# call close when the credential is no longer needed
credential = DefaultAzureCredential()
...
await credential.close()

# alternatively, use the credential as an async context manager
credential = DefaultAzureCredential()
async with credential:
  ...

此示例演示了使用异步凭据对来自azure-keyvault-secrets的异步SecretClient进行身份验证。

from azure.identity.aio import DefaultAzureCredential
from azure.keyvault.secrets.aio import SecretClient

default_credential = DefaultAzureCredential()
client = SecretClient("https://my-vault.vault.azure.net", default_credential)

托管标识支持

通过DefaultAzureCredential或直接使用ManagedIdentityCredential支持以下 Azure 服务的托管标识身份验证

示例

使用分配给用户的托管标识进行身份验证

from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient

credential = ManagedIdentityCredential(client_id=managed_identity_client_id)
client = SecretClient("https://my-vault.vault.azure.net", credential)

使用系统分配的托管标识进行身份验证

from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient

credential = ManagedIdentityCredential()
client = SecretClient("https://my-vault.vault.azure.net", credential)

云配置

凭据默认使用 Microsoft Entra 端点进行 Azure 公共云的身份验证。要访问其他云中的资源,例如 Azure Government 或私有云,请使用authority参数配置凭据。AzureAuthorityHosts定义了知名云的权限

from azure.identity import AzureAuthorityHosts

DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT)

如果您的云的权限未在AzureAuthorityHosts中列出,您可以明确指定其 URL

DefaultAzureCredential(authority="https://login.partner.microsoftonline.cn")

作为指定authority参数的替代方法,您还可以将AZURE_AUTHORITY_HOST环境变量设置为云权限的 URL。这种方法在配置多个凭据以对同一云进行身份验证时很有用

AZURE_AUTHORITY_HOST=https://login.partner.microsoftonline.cn

并非所有凭据都需要此配置。通过开发工具(如AzureCliCredential)进行身份验证的凭据使用该工具的配置。同样,VisualStudioCodeCredential接受authority参数,但默认为与 VS Code 的“Azure: Cloud”设置匹配的权限。

凭据类

凭据链

凭据 用法
DefaultAzureCredential 提供了一种简化的身份验证体验,以快速开始开发在 Azure 中运行的应用程序。
ChainedTokenCredential 允许用户定义由多个凭据组成的自定义身份验证流程。

身份验证 Azure 托管应用程序

凭据 用法
EnvironmentCredential 通过指定在环境变量中指定的凭据信息对服务主体或用户进行身份验证。
ManagedIdentityCredential 身份验证 Azure 资源的托管标识。
WorkloadIdentityCredential 在 Kubernetes 上支持Microsoft Entra Workload ID

身份验证服务主体

凭据 用法 参考
AzurePipelinesCredential 支持 Azure Pipelines 上的Microsoft Entra Workload ID
CertificateCredential 使用证书对服务主体进行身份验证。 服务主体身份验证
ClientAssertionCredential 使用已签名客户端声明对服务主体进行身份验证。
ClientSecretCredential 使用密钥对服务主体进行身份验证。 服务主体身份验证

身份验证用户

凭据 用法 参考 注释
AuthorizationCodeCredential 使用先前获得的授权码验证用户。 OAuth2认证代码
DeviceCodeCredential 在具有有限UI的设备上交互式验证用户。 设备代码认证
InteractiveBrowserCredential 使用默认系统浏览器交互式验证用户。 OAuth2认证代码 InteractiveBrowserCredential 不支持 GitHub Codespaces。作为解决方案,请使用 DeviceCodeCredential
OnBehalfOfCredential 通过请求链传播委托用户身份和权限。 代表认证
UsernamePasswordCredential 使用用户名和密码(不支持多因素认证)验证用户。 用户名 + 密码认证

通过开发工具进行认证

凭据 用法 参考
AzureCliCredential 使用 Azure CLI 在开发环境中进行认证。 Azure CLI 认证
AzureDeveloperCliCredential 使用 Azure Developer CLI 在开发环境中进行认证。 Azure Developer CLI 参考
AzurePowerShellCredential 使用 Azure PowerShell 在开发环境中进行认证。 Azure PowerShell 认证
VisualStudioCodeCredential 作为已登录到 Visual Studio Code Azure 账户扩展的用户进行认证。 VS Code Azure 账户扩展

环境变量

DefaultAzureCredentialEnvironmentCredential 可以通过环境变量进行配置。每种类型的认证都需要特定的变量值

具有秘密的托管服务帐户

变量名
AZURE_CLIENT_ID Microsoft Entra 应用程序的 ID
AZURE_TENANT_ID 应用程序的 Microsoft Entra 租户 ID
AZURE_CLIENT_SECRET 应用程序的一个客户端密钥

具有证书的托管服务帐户

变量名 必需
AZURE_CLIENT_ID Microsoft Entra 应用程序的 ID X
AZURE_TENANT_ID 应用程序的 Microsoft Entra 租户 ID X
AZURE_CLIENT_CERTIFICATE_PATH PEM 或 PKCS12 证书文件(包括私钥)的路径 X
AZURE_CLIENT_CERTIFICATE_PASSWORD 证书文件的密码(如有)
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN 如果设置为 True,则凭证在 JWT 请求的 x5c 标头中发送公钥证书链。这是 Subject Name/Issuer (SNI) 认证所必需的。默认值为 False。存在一个 已知限制,即异步 SNI 认证不受支持。

用户名和密码

变量名
AZURE_CLIENT_ID Microsoft Entra 应用程序的 ID
AZURE_USERNAME 用户名(通常是一个电子邮件地址)
AZURE_PASSWORD 该用户的密码

配置尝试按照前面的顺序进行。例如,如果客户端秘密和证书的值都存在,则使用客户端秘密。

持续访问评估

从版本 1.14.0 开始,可以按请求基础访问受 持续访问评估 (CAE) 保护的资源。可以通过在凭证的 get_token 方法的 enable_cae 关键字参数中设置 True 来启用此行为。CAE 不支持开发人员和托管身份凭证。

令牌缓存

令牌缓存是 Azure Identity 库提供的一项功能,允许应用

  • 在内存中(默认)或磁盘上(可选)缓存令牌。
  • 提高弹性和性能。
  • 减少对 Microsoft Entra ID 发出以获取访问令牌的请求数量。

Azure Identity 库提供内存和持久磁盘缓存。有关更多信息,请参阅 令牌缓存文档

代理认证

身份验证代理是一种在用户机器上运行的应用程序,负责管理连接账户的认证握手和令牌维护。目前仅支持Windows Web账户管理器(WAM)。要启用支持,请使用azure-identity-broker包。有关使用WAM进行认证的详细信息,请参阅代理插件文档

故障排除

有关如何诊断各种失败场景的详细信息,请参阅故障排除指南

错误处理

当凭据由于缺少所需数据或状态而无法尝试认证时,会引发CredentialUnavailableError。例如,当环境凭据配置不完整时,它会引发此异常。

当凭据认证失败时,会引发azure.core.exceptions.ClientAuthenticationErrorClientAuthenticationError具有一个message属性,描述了认证失败的原因。当由DefaultAzureCredentialChainedTokenCredential引发时,消息会收集链中每个凭据的错误消息。

有关处理特定Microsoft Entra ID错误的更多信息,请参阅Microsoft Entra ID的错误代码文档

日志记录

此库使用标准的logging库进行日志记录。凭据记录基本信息,包括在INFO级别记录HTTP会话(URL、头部等)。这些日志条目不包含认证机密。

默认情况下,未启用详细的DEBUG级别日志记录,包括请求/响应体和头部值。可以通过logging_enable参数启用。例如

credential = DefaultAzureCredential(logging_enable=True)

注意:凭据的DEBUG级别日志包含敏感信息。这些日志必须受到保护,以避免损害账户安全。

下一步

客户端库支持

支持Microsoft Entra认证并列在Azure SDK发布页面上的客户端和管理库接受此库中的凭据。您可以在其文档中了解更多有关如何使用这些库的信息,这些信息链接到发布页面。

已知问题

此库不支持Azure AD B2C

有关其他开放问题,请参阅库的GitHub仓库

提供反馈

如果您遇到错误或有所建议,请提交一个问题

贡献

此项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权利,并且确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com

当您提交拉取请求时,CLA-bot将自动确定您是否需要提供CLA,并相应地装饰PR(例如,标签、注释)。只需遵循机器人提供的说明即可。您只需在所有使用我们的CLA的仓库中这样做一次。

此项目已采用Microsoft开源行为准则。有关更多信息,请参阅行为准则FAQ或联系opencode@microsoft.com以获取任何额外的问题或评论。

Impressions

发行历史

1.18.0 (2024-09-19)

新增功能

  • 所有凭证现在都实现了 SupportsTokenInfoAsyncSupportsTokenInfo 协议。每个凭证现在都有一个 get_token_info 方法,该方法返回一个 AccessTokenInfo 对象。get_token_info 方法是 get_token 的替代方法,可以更好地支持更复杂的身份验证场景。(#36882
    • 何时刷新令牌的信息现在保存在 AccessTokenInfo 中(如果可用)。

其他更改

  • ManagedIdentityCredential 中添加了身份配置验证,以避免非确定状态(例如,同时指定了 resource_idobject_id)。(#36950
  • 在 Azure Cloud Shell 环境中为 ManagedIdentityCredential 添加了额外的验证。(#36438
  • azure-core 的最低依赖性提升到 >=1.31.0

1.18.0b2 (2024-08-09)

新增功能

  • 当使用同步 OnBehalfOfCredential 与证书一起使用时,添加了对 send_certificate_chain 关键字参数的支持。(#36810
  • AzurePowerShellCredential 现在在通过 PowerShell 进行身份验证时支持使用安全字符串。(#36653

1.18.0b1 (2024-07-16)

  • 修复了 SharedTokenCacheCredential 不可序列化的问题。

其他更改

  • 同步 ManagedIdentityCredential 已更新,以使用 MSAL(Microsoft Authentication Library)来处理大多数底层托管身份实现。(#36653

1.17.1 (2024-06-21)

已修复的错误

  • 如果探测请求接收到非 JSON 响应,则继续尝试请求令牌。(#36184

1.17.0 (2024-06-18)

重大更改

这些更改不会影响稳定版本(如 1.16.0)的 API。只有针对 beta 版本(如 1.17.0b1)编写的代码受影响。

  • AzurePipelinesCredential 现在有一个必需的关键字参数 system_access_token。(#35858

已修复的错误

  • ManagedIdentityCredential 中的 IMDS 探测请求返回非 JSON 响应时,允许凭证链继续。(#36016

1.17.0b2 (2024-06-11)

新增功能

  • OnBehalfOfCredential 现在通过 client_assertion_func 关键字参数支持客户端断言回调。这允许使用客户端断言(如联合凭证)进行身份验证。(#35812

已修复的错误

  • 托管身份错误修复

1.16.1 (2024-06-11)

已修复的错误

  • 托管身份错误修复

1.17.0b1 (2024-05-13)

新增功能

  • EnvironmentCredential 添加了对环境变量 AZURE_CLIENT_SEND_CERTIFICATE_CHAIN 的支持。
  • 引入了一个新的凭证,AzurePipelinesCredential,以支持 Azure Pipelines 中的服务连接的工作负载身份联合。(#35397

已修复的错误

  • 修复了在将某些凭证用作上下文管理器时出现的类型错误。(#35415

1.16.0 (2024-04-09)

其他更改

  • 为了防止过多的重试延迟并提高响应能力,将 ManagedIdentityCredential 中的 IMDS 请求的重试退避因子从 2 降低到 0.8。用户可以使用 retry_backoff_factor 参数自定义此设置:ManagedIdentityCredential(retry_backoff_factor=2)。(#35070

1.16.0b2 (2024-03-05)

新增功能

  • 添加了序列化支持。(#34134

已修复的错误

  • 修复了 AzurePowerShellCredential 中的一个问题,即如果 pwsh 不可用且命令提示符语言不是英语,则不会回退到 powershell。(#34271

1.16.0b1 (2024-02-06)

已修复的错误

  • 修复了 ClientAssertionCredential 构造函数在提供 kwargs 时失败的错误。(#33673
  • ManagedIdentityCredential 在 Docker Desktop 返回 403 响应尝试访问 IMDS 端点时,在链中跳转到下一个凭据时对错误消息的匹配更为宽容。(#33928

其他更改

  • AzureCliCredential 使用了 az CLI 版本 >= 2.54.0 返回的新 expires_on 属性来确定令牌过期。(#33947
  • Azure-identity 支持 Python 3.8 或更高版本。

1.15.0 (2023-10-26)

新增功能

  • 添加了载体令牌提供者。(#32655

已修复的错误

  • 修复了 InteractiveBrowserCredential 在没有浏览器支持时无法传递到链中下一个凭据的问题。(#32276

1.15.0b2 (2023-10-12)

新增功能

  • enable_support_logging 作为关键字参数添加到使用 MSAL 的 PublicClientApplication 的凭据。这允许额外的支持日志记录,其中可能包含 PII。(#32135

重大更改

这些更改不会影响 1.14.0 等稳定版本的 API。只有针对 1.15.0b1 等测试版本的代码可能会受到影响。

  • Windows Web Account Manager (WAM) 代理身份验证已移动到另一个包。

已修复的错误

  • ManagedIdentityCredential 现在将在实例元数据端点返回 410 响应时正确重试。(#32200

1.14.1 (2023-10-09)

已修复的错误

  • 开发人员凭据的 bug 修复

1.15.0b1 (2023-09-12)

新增功能

  • 添加了 Windows Web Account Manager (WAM) 代理身份验证支持。
  • InteractiveBrowserCredential 添加了 enable_msa_passthrough 支持。默认情况下,InteractiveBrowserCredential 仅列出 Microsoft Entra 账户。如果您将 enable_msa_passthrough 设置为 True,它将列出 Microsoft Entra 账户和已登录到 Windows 的 MSA outlook.com 账户。

已修复的错误

  • 确保 AzurePowershellCredential 使用 -NoProfile 标志调用 PowerShell,以避免加载用户配置文件,从而实现更一致的行为。(#31682
  • 修复了基于子进程的开发人员凭据(如 AzureCliCredential)的问题,其中进程有时会挂起等待用户输入。(#31534
  • 修复了 ClientAssertionCredential 未正确检查是否应启用 CAE 的问题。(#31544
  • 当 Docker Desktop 返回 403 响应尝试访问 IMDS 端点时,ManagedIdentityCredential 将跳转到链中的下一个凭据。(#31824

其他更改

  • 将异步凭据的类型更新为匹配 AsyncTokenCredential 协议。
  • 如果 DefaultAzureCredential 中存在,则 EnvironmentCredential 现在将使用日志级别 INFO 而不是 WARNING 来通知用户环境配置不完整。(#31814
  • 加强了 AzureCliCredentialAzureDeveloperCliCredential 在确定用户是否登录时的错误检查。现在,如果错误中存在 AADSTS 错误,将传播完整的错误消息而不是预先设定的错误消息。(#30047
  • 使用 IMDS 的 ManagedIdentityCredential 实例现在即使在之前的尝试失败后也允许继续向 IMDS 端点发送请求。这是为了防止凭据实例在暂时性网络故障后可能永久禁用。
  • ManagedIdentityCredential 中的 IMDS 端点探测现在仅在凭证链(如 DefaultAzureCredential)内部发生。此探测请求的超时时间已从 0.3 秒增加到 1 秒,以降低假阴性的可能性。

1.14.0 (2023-08-08)

新增功能

  • 连续访问评估(CAE)现在可以通过在 get_token 中将 enable_cae 关键字参数设置为 True 来按请求进行配置。这适用于用户凭据和服务主体凭据。(#30777

重大更改

  • CP1 客户端功能对于 CAE 也不再默认始终开启,对于用户凭据。此功能现在将由每个 SDK 在每个 get_token 请求中根据需要配置。(#30777
    • 现在将在持久缓存名称后附加后缀,以指示缓存中存储的是 CAE 或非 CAE 令牌。这是为了防止 CAE 和非 CAE 令牌在同一缓存中混合/覆盖。如果您尝试在不同版本的 Azure Identity 库之间共享相同的缓存,这可能会引起问题,因为每个应用程序都会从不同的缓存文件中读取。
    • 由于 CAE 也不再始终为用户凭据启用,因此不再支持 AZURE_IDENTITY_DISABLE_CP1 环境变量。

已修复的错误

  • 凭据类型正确实现了 azure-coreTokenCredential 协议。(#25175

1.14.0b2(2023-07-11)

新增功能

  • DefaultAzureCredential 中添加了对 workload_identity_tenant_id 的支持。

1.14.0b1(2023-06-06)

新增功能

  • 在 DefaultAzureCredential 中发现缓存的令牌凭据已过期时,继续尝试下一个凭据。(#30441

其他更改

  • 当使用 VisualStudioCodeCredential 时(因为它目前损坏),会打印出有用的错误消息。(#30385
  • 已移除对 six 的依赖。(#30613

1.13.0 (2023-05-11)

重大更改

这些更改不会影响 1.12.0 等稳定版本中的 API。只有针对 1.13.0b4 等测试版编写的代码可能受到影响。

  • Windows Web Account Manager (WAM) 代理身份验证仍然处于预览阶段,并且在本版本中不可用。它将在下一个测试版中提供。
  • 对于服务主体凭据的额外连续访问评估(CAE)支持仍然处于预览阶段,并且在本版本中不可用。它将在下一个测试版中提供。
  • DefaultAzureCredential 中将关键字参数 developer_credential_timeout 重命名为 process_timeout,以与其他启动子进程以获取令牌的凭据保持一致。

1.13.0b4(2023-04-11)

新增功能

  • 通过使用 process_timeout 关键字参数,现在可以通过启动子进程获取令牌的凭据具有可配置的超时。这解决了这些进程可能需要比当前默认超时值更长时间的情况。受影响的凭据是 AzureCliCredentialAzureDeveloperCliCredentialAzurePowerShellCredential。(注意:对于 DefaultAzureCredentialdeveloper_credential_timeout 关键字参数允许用户将其传播到认证链中的 AzureCliCredentialAzureDeveloperCliCredentialAzurePowerShellCredential。)(#28290

1.13.0b3(2023-03-07)

新增功能

  • 将参数从 instance_discovery 更改为 disable_instance_discovery,使其更具明确性。
  • 服务主体凭据现在启用了对 连续访问评估(CAE) 的支持。这指示 Microsoft Entra ID,您的应用程序可以处理 CAE 声明挑战。

1.13.0b2(2023-02-07)

新增功能

  • 为 Azure Developer CLI 添加了 AzureDeveloperCredential。(#27916
  • 为 Kubernetes 上的工作负载身份联合添加了 WorkloadIdentityCredential。(#28536
  • 增加了对使用“TryAutoDetect”作为AZURE_REGIONAL_AUTHORITY_NAME值的支持,以启用自动检测适当的授权者(#526

1.13.0b1(2023-01-10)

新增功能

  • 增加了Windows Web帐户管理器(WAM)代理身份验证支持。(#23687

重大更改

这些更改不会影响1.12.0等稳定版本的API。只有针对1.12.0b1等测试版编写的代码可能会受到影响。

  • validate_authority替换为instance_discovery。现在,您需要使用instance_discovery=False而不是将validate_authority=False来禁用授权验证和实例发现。

已修复的错误

  • 修复了当Azure CLI未安装在非英语控制台时,AzureCliCredential会返回错误信息的问题。(#27965

1.12.0 (2022-11-08)

已修复的错误

  • AzureCliCredential现在即使在az向stderr打印警告时也能正常工作。(#26857)(感谢@micromaomao的贡献)
  • 修复了当使用SharedTokenCacheCredential时,用户提供的TokenCachePersistenceOptions没有传播的问题。(#26982

重大更改

  • 默认情况下,将VisualStudioCodeCredentialDefaultAzureCredential令牌链中排除,因为由于问题#23249,通过Visual Studio Code的SDK身份验证已损坏。在问题修复后,将重新启用VisualStudioCodeCredential。问题#25713跟踪此问题。在此期间,Visual Studio Code用户可以使用Azure CLI对其开发环境进行身份验证。

其他更改

  • 增加了对Python 3.11的支持,并停止支持Python 3.6。

1.12.0b2(2022-10-11)

1.12.0版本候选

1.12.0b1(2022-09-22)

新增功能

  • AzureCliCredentialAzurePowerShellCredential添加了指定tenant_id的能力(感谢 @tikicoder)(#25207
  • DefaultAzureCredential令牌链中删除了VisualStudioCodeCredential。(#23249
  • EnvironmentCredential增加了对证书密码的AZURE_CLIENT_CERTIFICATE_PASSWORD支持(#24652
  • 为msal客户端添加了validate_authority支持(#22625

1.11.0 (2022-09-19)

新增功能

  • additionally_allowed_tenants添加到以下凭证选项中,以强制多租户身份验证的显式选择行为
    • AuthorizationCodeCredential
    • AzureCliCredential
    • AzurePowerShellCredential
    • CertificateCredential
    • ClientAssertionCredential
    • ClientSecretCredential
    • DefaultAzureCredential
    • OnBehalfOfCredential
    • UsernamePasswordCredential
    • VisualStudioCodeCredential

重大更改

  • 支持多租户身份验证的凭证类型,如果请求的租户ID与凭证的租户ID不匹配,且不在additionally_allowed_tenants中,现在将抛出ClientAuthenticationError。应用程序现在必须明确地将额外的租户添加到additionally_allowed_tenants列表中,或将'*'添加到列表中,以启用从除最初指定的租户ID以外的租户获取令牌。

关于此更改及其背后的考虑,请参阅此处的更多信息。

  • 这些在1.11.0b3中的测试功能已被从本版本中删除,并将添加回1.12.0b1
    • AzureCliCredentialtenant_id
    • DefaultAzureCredential令牌链中删除了VisualStudioCodeCredential
    • EnvironmentCredentialAZURE_CLIENT_CERTIFICATE_PASSWORD支持
    • validate_authority支持

1.11.0b3(2022-08-09)

Azure-identity支持Python 3.7或更高版本。有关详细信息,请参阅我们关于Azure SDK for Python版本支持策略的页面。

新增功能

  • AzureCliCredential添加了指定tenant_id的能力(感谢 @tikicoder)(#25207

重大更改

  • DefaultAzureCredential令牌链中删除了VisualStudioCodeCredential。(#23249

1.11.0b2(2022-07-05)

新增功能

  • EnvironmentCredential增加了对证书密码的AZURE_CLIENT_CERTIFICATE_PASSWORD支持(#24652

已修复的错误

  • 修复了如果PEM证书不以"-----"开头则无法解析的问题(#24643

1.11.0b1(2022-05-10)

新增功能

  • 为msal客户端添加了validate_authority支持(#22625

1.10.0 (2022-04-28)

重大更改

这些更改不会影响稳定版本(如1.9.0)的API。只有针对beta版本(如1.10.0b1)编写的代码可能会受到影响。

  • validate_authority在1.10.0中不可用。

其他更改

  • 支持msal-extensions版本1.0.0(#23927

1.10.0b1(2022-04-07)

新增功能

  • 为msal客户端添加了validate_authority支持(#22625

1.9.0 (2022-04-05)

新增功能

  • 如果启用了日志调试,则添加了PII日志。(#23203

重大更改

这些更改不会影响稳定版本(如1.8.0)的API。只有针对beta版本(如1.9.0b1)编写的代码可能会受到影响。

  • validate_authority在1.9.0中不可用。

已修复的错误

  • 在msal响应中添加了对content的检查。(#23483
  • 修复了异步OBO凭证无法正确刷新的问题。(#21981

其他更改

  • 已移除resource_id,请使用identity_config代替。
  • ClientAssertionCredentialget_assertion参数名称重命名为func

1.9.0b1(2022-03-08)

新增功能

  • 为msal客户端添加了validate_authority支持(#22625
  • 为用户分配的托管标识添加了resource_id支持(#22329
  • 添加了对ClientAssertionCredential的支持(#22328
  • 更新了应用服务API版本到"2019-08-01"(#23034

1.8.0 (2022-03-01)

已修复的错误

  • 处理注入的"tenant_id"和"claims"(#23138

    get_token()方法中的"tenant_id"参数仅由它支持

    • AuthorizationCodeCredential
    • AzureCliCredential
    • AzurePowerShellCredential
    • InteractiveBrowserCredential
    • DeviceCodeCredential
    • EnvironmentCredential
    • UsernamePasswordCredential

    其他类型的凭据将忽略它。

其他更改

  • Python 2.7不再受支持。请使用Python版本3.6或更高版本。

1.7.1 (2021-11-09)

已修复的错误

  • 使用异步AadClient修复了多租户身份验证问题(#21289

1.7.0 (2021-10-14)

重大更改

这些更改不会影响稳定版本(如1.6.0)的API。只有针对beta版本(如1.7.0b1)编写的代码可能会受到影响。

  • allow_multitenant_authentication参数已被删除,默认行为现在是如果它是true。可以通过设置环境变量AZURE_IDENTITY_DISABLE_MULTITENANTAUTHTrue来完全禁用多租户身份验证功能。
  • azure.identity.RegionalAuthority已被删除。
  • CertificateCredentialClientSecretCredential删除了regional_authority参数。
  • AzureApplicationCredential已被删除。
  • OnBehalfOfCredential构造函数中的client_credential已被删除。请使用client_secretclient_certificate代替。
  • OnBehalfOfCredential构造函数中的user_assertion改为关键字参数。

1.7.0b4(2021-09-09)

新增功能

  • CertificateCredential接受PKCS12格式的证书(#13540
  • OnBehalfOfCredential支持代表用户访问资源的on-behalf-of身份验证流程(#19308
  • DefaultAzureCredential允许通过关键字参数interactive_browser_client_id指定交互式浏览器的客户端ID(#20487

其他更改

  • azure.identity命名空间中的凭据中添加了上下文管理器方法和close()。在with块的末尾或调用close()时,这些凭据将关闭其底层传输会话。(#18798

1.6.1 (2021-08-19)

其他更改

  • 持久缓存实现现在按需加载,在导入传递依赖项(如pywin32失败)时启用工作区。(#19989

1.7.0b3(2021-08-10)

重大更改

这些更改不会影响稳定版本(如1.6.0)的API。只有针对beta版本(如1.7.0b1)编写的代码可能会受到影响。

  • AZURE_POD_IDENTITY_TOKEN_URL重命名为AZURE_POD_IDENTITY_AUTHORITY_HOST。现在值应该是主机,例如"http://169.254.169.254"(默认)。

已修复的错误

  • 修复了导入 azure.identity.aio.AzureApplicationCredential 的问题 (#19943)

其他更改

  • CustomHookPolicy 添加到凭据 HTTP 管道中。这允许应用程序使用 raw_request_hookraw_response_hook 关键字参数初始化凭据。这些参数的值应分别为接受 PipelineRequestPipelineResponse 的回调函数。例如:ManagedIdentityCredential(raw_request_hook=lambda request: print(request.http_request.url))
  • 减少了冗余的 ChainedTokenCredentialDefaultAzureCredential 记录。在 Python 3.7+ 中,这些类调用的凭据现在记录调试消息而不是信息消息。(#18972)
  • 持久缓存实现现在按需加载,在导入传递依赖项(如pywin32失败)时启用工作区。(#19989

1.7.0b2 (2021-07-08)

新增功能

  • InteractiveBrowserCredential 的关键字参数 login_hint 使登录页面上预先填写用户名/电子邮件地址字段成为可能 (#19225)
  • AzureApplicationCredential 是应用程序部署到 Azure 的默认凭据链 (#19309)

已修复的错误

  • azure.identity.aio.ManagedIdentityCredential 是一个异步上下文管理器,它在 with 块结束时关闭其底层传输会话

其他更改

  • 大多数凭据可以使用来自身份验证挑战的租户 ID 值,从而使其能够请求来自正确租户的令牌。此行为是可选的,并由新的关键字参数 allow_multitenant_authentication 控制。(#19300)
    • allow_multitenant_authentication 为 False(默认值)时,凭据将引发 ClientAuthenticationError,当其配置的租户与其为令牌请求指定的租户不匹配时。这可能不同于凭据先前版本引发的异常。为了保持先前行为,将环境变量 AZURE_IDENTITY_ENABLE_LEGACY_TENANT_SELECTION 设置为 "True"。
  • CertificateCredentialClientSecretCredential 通过关键字参数 regional_authority 或环境变量 AZURE_REGIONAL_AUTHORITY_NAME 支持在 Azure VM 上的区域 STS。有关可能的值,请参阅 azure.identity.RegionalAuthority。(#19301)
  • 将最低 azure-core 版本升级到 1.11.0,最低 msal 版本升级到 1.12.0
  • 在 IMDS 认证失败后,ManagedIdentityCredential 引发一致的错误消息并使用 raise from 传播内部异常 (#19423)

1.7.0b1 (2021-06-08)

从这次发布开始,此库需要 Python 2.7 或 3.6+。

新增

  • VisualStudioCodeCredential 从 VS Code 用户设置获取其默认租户和权威配置 (#14808)

1.6.0 (2021-05-13)

这是最后一个支持 Python 3.5 的版本。下一个版本将需要 Python 2.7 或 3.6+。

新增

  • AzurePowerShellCredential 以登录到 Azure PowerShell 的身份进行身份验证。默认情况下,此凭据是 DefaultAzureCredential 的一部分,但可以通过关键字参数禁用:DefaultAzureCredential(exclude_powershell_credential=True) (#17341)

修复

  • AzureCliCredential 在 CLI 超时时会引发 CredentialUnavailableError 并终止超时的子进程
  • 减少了 Azure VM 上 ManagedIdentityCredential 的重试延迟

1.6.0b3 (2021-04-06)

重大更改

这些更改不会影响稳定版本(如 1.5.0)的 API。只有针对 beta 版本(如 1.6.0b1)编写的代码可能会受到影响。

  • 删除了属性 AuthenticationRequiredError.error_details

修复

  • 凭据在连接失败后或在 Retry-After 标头指示的情况下会一致地重试令牌请求
  • ManagedIdentityCredential 正确缓存令牌

新增

  • InteractiveBrowserCredential 在更多 WSL 环境中工作(#17615

1.6.0b2(2021-03-09)

重大更改

这些更改不会影响稳定版本(如 1.5.0)的 API。只有针对 beta 版本(如 1.6.0b1)编写的代码可能会受到影响。

  • CertificateCredential 的关键字参数 certificate_bytes 重命名为 certificate_data

  • 接受关键字参数 allow_unencrypted_cacheenable_persistent_cache 的凭证,用于配置持久缓存,现在接受一个值为 TokenCachePersistenceOptions 实例的 cache_persistence_options 参数。例如

    # before (e.g. in 1.6.0b1):
    DeviceCodeCredential(enable_persistent_cache=True, allow_unencrypted_cache=True)
    
    # after:
    cache_options = TokenCachePersistenceOptions(allow_unencrypted_storage=True)
    DeviceCodeCredential(cache_persistence_options=cache_options)
    

    请参阅文档和示例以获取更多信息。

新增

  • 新类 TokenCachePersistenceOptions 用于配置持久缓存
  • AuthenticationRequiredError.claims 属性提供了用户凭证 authenticate() 方法所需的任何附加声明

1.6.0b1(2021-02-09)

更改

  • 将最低 msal 版本提升至 1.7.0
  • 将最低 six 版本提升至 1.12.0

新增

  • InteractiveBrowserCredential 在内部使用 PKCE 来保护授权代码
  • CertificateCredential 可以从字节而不是文件路径加载证书。要提供字节形式的证书,请使用关键字参数 certificate_bytes 而不是 certificate_path,例如:CertificateCredential(tenant_id, client_id, certificate_bytes=cert_bytes)#14055
  • 用户凭证支持持续访问评估(CAE)
  • 1.5.0b2 中的应用程序身份验证 API

修复

  • ManagedIdentityCredential 正确解析来自当前(预览版)Azure ML 管理身份版本的响应(#15361

1.5.0 (2020-11-11)

重大更改

  • 将可选的 CertificateCredential 关键字参数 send_certificate(在 1.5.0b1 中添加)重命名为 send_certificate_chain
  • 移除了先前测试版中添加的用户身份验证 API。这些将在 1.6.0b1 中重新引入。传递以下关键字参数通常不会导致运行时错误,但参数没有效果。(#14601
    • DeviceCodeCredentialInteractiveBrowserCredentialUsernamePasswordCredential 中移除了 authenticate 方法
    • CertificateCredentialClientSecretCredentialDeviceCodeCredentialInteractiveBrowserCredentialUsernamePasswordCredential 中移除了 allow_unencrypted_cacheenable_persistent_cache 关键字参数
    • DeviceCodeCredentialInteractiveBrowserCredential 中移除了 disable_automatic_authentication 关键字参数
    • SharedTokenCacheCredential 中移除了 allow_unencrypted_cache 关键字参数
    • 移除了类 AuthenticationRecordAuthenticationRequiredError
  • ManagedIdentityCredential 中移除了 identity_config 关键字参数(在 1.5.0b1 中添加)

更改

  • DeviceCodeCredential 的参数 client_id 现在是可选的。如果不提供,凭证将使用 Azure 开发应用程序对用户进行身份验证。(#14354
  • 当使用包含无效字符的租户 ID 构造时,凭证将引发 ValueError#14821
  • 将最低 msal 版本提升至 1.6.0

新增

  • ManagedIdentityCredential 支持 Service Fabric(#12705)和 Azure Arc(#12702

修复

  • 防止 VisualStudioCodeCredential 在用户未登录到 Visual Studio Code 时使用无效的认证数据(#14438
  • ManagedIdentityCredential 使用 Azure Functions 在 Linux 消费型托管计划上支持的 API 版本(#14670
  • 当在 Python 2.7 中等待用户认证超时时,InteractiveBrowserCredential.get_token() 引发一个更清晰的错误信息(#14773

1.5.0b2(2020-10-07)

修复

  • AzureCliCredential.get_token 正确设置令牌过期时间,防止客户端使用过期的令牌(#14345

更改

  • 采用了 msal-extensions 0.3.0(#13107

1.4.1 (2020-10-07)

修复

  • AzureCliCredential.get_token 正确设置令牌过期时间,防止客户端使用过期的令牌(#14345

1.5.0b1(2020-09-08)

新增

  • 1.4.0b7 版本的应用程序认证 API
  • ManagedIdentityCredential 支持 App Service 的最新版本 (#11346)
  • DefaultAzureCredential 允许通过关键字参数 managed_identity_client_id 指定用户分配的托管身份的客户端 ID (#12991)
  • CertificateCredential 在创建时使用 send_certificate=True 支持主题名称/发行者认证。异步的 CertificateCredential (azure.identity.aio.CertificateCredential) 将在未来的版本中支持此功能。(#10816)
  • azure.identity 中的凭证支持 ADFS 授权,除了 VisualStudioCodeCredential。要配置此类凭证,请使用 authoritytenant_id="adfs" 关键字参数配置凭证,例如 ClientSecretCredential(authority="<your ADFS URI>", tenant_id="adfs")。异步凭证(在 azure.identity.aio 中)将在未来的版本中支持 ADFS。(#12696)
  • InteractiveBrowserCredential 关键字参数 redirect_uri 启用使用用户指定的具有自定义重定向 URI 的应用程序进行认证 (#13344)

破坏性变更

  • 从异步 SharedTokenCacheCredential(即 azure.identity.aio.SharedTokenCacheCredential)中移除了 authentication_record 关键字参数

1.4.0 (2020-08-10)

新增

  • DefaultAzureCredential 使用环境变量 AZURE_CLIENT_ID 的值来配置用户分配的托管身份。(#10931)

重大更改

  • VSCodeCredential 重命名为 VisualStudioCodeCredential
  • 移除了在 1.4.0 beta 版本中添加的应用程序认证 API。这些将在 1.5.0b1 中重新引入。传递以下关键字参数通常不会导致运行时错误,但参数没有效果。
    • DeviceCodeCredentialInteractiveBrowserCredentialUsernamePasswordCredential 中移除了 authenticate 方法
    • CertificateCredentialClientSecretCredentialDeviceCodeCredentialInteractiveBrowserCredentialUsernamePasswordCredential 中移除了 allow_unencrypted_cacheenable_persistent_cache 关键字参数
    • DeviceCodeCredentialInteractiveBrowserCredential 中移除了 disable_automatic_authentication 关键字参数
    • SharedTokenCacheCredential 中移除了 allow_unencrypted_cache 关键字参数
    • 移除了类 AuthenticationRecordAuthenticationRequiredError
    • ManagedIdentityCredential 中移除了 identity_config 关键字参数

1.4.0b7 (2020-07-22)

  • DefaultAzureCredential 有一个新可选的关键字参数 visual_studio_code_tenant_id,该参数设置当以登录到 Visual Studio Code 的 Azure 用户身份进行认证时凭证应认证的租户。
  • AuthenticationRecord.deserialize 的位置参数 json_string 重命名为 data

1.4.0b6 (2020-07-07)

  • AzureCliCredential 不会因为 PyCharm 运行 CLI 时产生的意外输出而引发异常(感谢 @NVolcz)(#11362)
  • 将最小 msal 版本升级到 1.3.0
  • 异步的 AzureCliCredential 正确调用 /bin/sh (#12048)

1.4.0b5 (2020-06-12)

  • 防止因旧版 Python 3.6 中的错误导致在 Windows 上导入 AzureCliCredential 时出现错误(此错误在 Python 3.6.5 中已修复)。(#12014)
  • SharedTokenCacheCredential.get_token 在不带作用域的情况下调用时,将引发 ValueError 而不是 ClientAuthenticationError。(#11553

1.4.0b4 (2020-06-09)

  • ManagedIdentityCredential 可以使用当前托管环境支持的任何标识符配置用户分配的标识。要通过客户端 ID 指定标识,继续使用 client_id 参数。要通过任何其他 ID 指定标识,请使用 identity_config 参数,例如:ManagedIdentityCredential(identity_config={"object_id": ".."})。(#10989
  • CertificateCredentialClientSecretCredential 可以选择将获取的访问令牌存储在持久缓存中。要启用此功能,请使用 enable_persistent_cache=True 构建凭据。在 Linux 上,持久缓存需要 libsecret 和 pygobject。如果这些不可用或无法使用(例如,在 SSH 会话中),则加载持久缓存将引发错误。您可以配置凭据以使用不加密的缓存作为回退,通过使用关键字参数 allow_unencrypted_cache=True 构建。(#11347
  • AzureCliCredential 在 Azure CLI 中没有用户登录时会引发 CredentialUnavailableError。(#11819
  • AzureCliCredentialVSCodeCredential,分别允许以在 Azure CLI 和 Visual Studio Code 中签入的标识身份进行身份验证,可以从 azure.identityazure.identity.aio 中导入。
  • azure.identity.aio.AuthorizationCodeCredential.get_token() 不再接受可选关键字参数 executorloop。此方法的前版本没有正确使用这些参数,引发了异常,并且此版本的内部更改使它们变得过时。
  • InteractiveBrowserCredential 在无法在 localhost 上启动 HTTP 服务器时引发 CredentialUnavailableError。(#11665
  • 在构建 DefaultAzureCredential 时,您现在可以配置 InteractiveBrowserCredential 的租户 ID。如果没有指定,凭据将使用用户的默认租户进行身份验证。要指定不同的租户,请使用关键字参数 interactive_browser_tenant_id 或设置环境变量 AZURE_TENANT_ID。(#11548
  • SharedTokenCacheCredential 可以使用用户凭据提供的 AuthenticationRecord 进行初始化。(#11448
  • 在 1.4.0b3 中添加到 DeviceCodeCredentialInteractiveBrowserCredential 的用户身份验证 API 现在也在 UsernamePasswordCredential 上可用。(#11449
  • 在 1.4.0b3 中添加到 DeviceCodeCredentialInteractiveBrowserCredential 的可选持久缓存现在也在 Linux 和 macOS 以及 Windows 上可用。(#11134
    • 在 Linux 上,持久缓存需要 libsecret 和 pygobject。如果这些不可用,或者 libsecret 无法使用(例如,在 SSH 会话中),则加载持久缓存将引发错误。您可以通过使用关键字参数 allow_unencrypted_cache=True 配置凭据以使用不加密的缓存作为回退。

1.4.0b3(2020-05-04)

  • EnvironmentCredential 正确地使用 AZURE_TENANT_ID 的值初始化 UsernamePasswordCredential。(#11127
  • 构造函数关键字参数 authorityAZURE_AUTHORITY_HOST 的值可以可选地指定 "https" 方案。例如,"https://login.microsoftonline.us" 和 "login.microsoftonline.us" 都是有效的。(#10819
  • DeviceCodeCredentialInteractiveBrowserCredential 的用户身份验证新 API 的第一个预览版(#10612
    • 新方法 authenticate 以交互方式验证用户,返回可序列化的 AuthenticationRecord
    • 新构造函数关键字参数
      • authentication_record 允许使用先前的身份验证中的 AuthenticationRecord 初始化凭据
      • disable_automatic_authentication=True 配置凭据在需要交互式身份验证以获取令牌时引发 AuthenticationRequiredError 而不是立即开始该身份验证
      • enable_persistent_cache=True 配置这些凭据在支持的平台(在此版本中为 Windows)上使用持久缓存。默认情况下,它们只在内存中缓存。
  • 现在 DefaultAzureCredential 可以使用已登录到 Visual Studio Code 的 Azure 扩展的标识进行身份验证。 (#10472)

1.4.0b2 (2020-04-06)

  • DefaultAzureCredential 实例成功进行身份验证后,它会为每个后续的令牌请求使用相同的身份验证方法。这使得后续请求更有效率,并防止了身份验证方法的意外更改。 (#10349)
  • 所有 get_token 方法都始终需要至少一个作用域参数,如果没有传递任何参数则引发错误。尽管在之前的版本中 get_token() 有时可能成功,但它无法始终如一地这样做,因为其行为是未定义的,并且依赖于凭证的类型和内部状态。 (#10243)
  • SharedTokenCacheCredential 在缓存可用但包含模糊或不充分信息时引发 CredentialUnavailableError。这导致 ChainedTokenCredential 正确尝试链中的下一个凭证。 (#10631)
  • Active Directory 端点凭证的主机可以在环境变量 AZURE_AUTHORITY_HOST 中设置。有关常见值的列表,请参阅 azure.identity.KnownAuthorities。 (#8094)

1.3.1 (2020-03-30)

  • ManagedIdentityCredential 在为 IMDS 端点未配置标识时引发 CredentialUnavailableError。这导致 ChainedTokenCredential 正确尝试链中的下一个凭证。 (#10488)

1.4.0b1 (2020-03-10)

  • DefaultAzureCredential 现在可以使用登录到 Azure CLI 的标识进行身份验证,除非明确通过关键字参数禁用:DefaultAzureCredential(exclude_cli_credential=True) (#10092)

1.3.0 (2020-02-11)

  • 正确解析 Windows App Service 上的令牌过期时间 (#9393)
  • 当凭证由于缺少数据或状态而无法尝试进行身份验证时,将引发 CredentialUnavailableError (#9372)
  • CertificateCredential 支持密码保护的私钥 (#9434)

1.2.0 (2020-01-14)

  • 所有凭证管道都包括 ProxyPolicy (#8945)
  • 异步凭证是异步上下文管理器,具有异步的 close 方法 (#9090)

1.1.0 (2019-11-27)

  • 在 Windows 上,构建 DefaultAzureCredential 不再在 Python 3.8 上引发 ImportError (8294)
  • 当无法打开网络浏览器时,InteractiveBrowserCredential 将引发错误 (8465)
  • InteractiveBrowserCredential 提示选择帐户 (8470)
  • 可以通过关键字参数配置组成 DefaultAzureCredential 的凭证 (8514)
  • SharedTokenCacheCredential 接受可选的 tenant_id 关键字参数 (8689)

1.0.1 (2019-11-05)

  • ClientCertificateCredential 正确使用应用程序和租户 ID (8315)
  • InteractiveBrowserCredential 正确缓存令牌 (8352)
  • 采用 msal 1.0.0 和 msal-extensions 0.1.3 (8359)

1.0.0 (2019-10-29)

破坏性变更

  • 异步凭据现在默认使用 aiohttp 进行传输,但库不将其作为依赖项,因为异步 API 是可选的。要使用异步凭据,请安装 aiohttp 或查看 azure-core 文档 了解有关自定义传输的信息。
  • ClientSecretCredential 参数 "secret" 重命名为 "client_secret"
  • 现在所有具有 tenant_idclient_id 位置参数的凭据都按此顺序接受它们
  • InteractiveBrowserCredential 参数的更改
    • 位置参数 client_id 现在是一个可选的关键字参数。如果没有提供值,则将使用 Azure CLI 的客户端 ID。
    • 可选关键字参数 tenant 重命名为 tenant_id
  • DeviceCodeCredential 的更改
    • 可选位置参数 prompt_callback 现在是一个关键字参数
    • prompt_callback 的第三个参数现在是一个表示设备代码过期时间的 datetime
    • 可选关键字参数 tenant 重命名为 tenant_id
  • ManagedIdentityCredential 的更改
    • 现在不接受任何位置参数,仅接受一个关键字参数:client_id
    • 传输配置现在通过关键字参数完成,如 azure-core 文档 中所述

修复和改进

  • 使用与其他 Microsoft 应用程序共享的单点登录进行身份验证,当有多个用户已登录时只需提供用户名(#8095
  • DefaultAzureCredential 接受一个 authority 关键字参数,使其能够在国家云中使用(#8154

依赖项更改

1.0.0b4 (2019-10-07)

新功能

  • AuthorizationCodeCredential 使用之前获得的授权代码进行身份验证。有关此身份验证流的信息,请参阅 Microsoft Entra 的 授权代码文档
  • 多云支持:客户端凭据接受 Azure Active Directory 身份验证端点的权限作为 authority 关键字参数。已知权限定义在 azure.identity.KnownAuthorities 中。默认权限是 Azure 公共云,login.microsoftonline.comKnownAuthorities.AZURE_PUBLIC_CLOUD)。在 Azure 政府中运行的应用程序将使用 KnownAuthorities.AZURE_GOVERNMENT 而不是。
from azure.identity import DefaultAzureCredential, KnownAuthorities
credential = DefaultAzureCredential(authority=KnownAuthorities.AZURE_GOVERNMENT)

破坏性变更

  • InteractiveBrowserCredential 中删除了 client_secret 参数

修复和改进

  • UsernamePasswordCredential 正确处理没有租户信息的配置(#7260
  • 用户领域发现请求通过凭据管道发送(#7260

1.0.0b3 (2019-09-10)

新功能

  • SharedTokenCacheCredential 使用存储在由 Microsoft 应用程序共享的本地缓存中的令牌进行身份验证。这使得 Azure SDK 客户端在您在 Visual Studio 2019 中登录后可以静默地进行身份验证。当共享缓存可用且设置环境变量 AZURE_USERNAME 时,DefaultAzureCredential 将包括 SharedTokenCacheCredential。有关更多信息,请参阅 README

依赖项更改

1.0.0b2 (2019-08-05)

破坏性变更

  • 为了准备全新的配置API,已从公共API中移除azure.core.Configuration。静态create_config方法已重命名为_create_config,将在未来的版本中移除。

依赖项更改

  • 采用azure-core 1.0.0b2
    • 如果您稍后想回退到需要azure-core 1.0.0b1版本,无论是本库还是其他Azure SDK库,必须明确安装azure-core 1.0.0b1。例如:pip install azure-core==1.0.0b1 azure-identity==1.0.0b1
  • 采用MSAL 0.4.1
  • Python 2.7的新依赖项:mock

新功能

  • 添加了用于用户认证的凭据
  • DeviceCodeCredential
  • InteractiveBrowserCredential
  • UsernamePasswordCredential
  • 这些凭据的异步版本将在未来的版本中添加

1.0.0b1(2019-06-28)

版本1.0.0b1是我们为Azure SDK客户端库创建用户友好且Pythonic认证API努力的第一个预览版。有关其他Azure SDK库预览版的信息,请访问https://aka.ms/azure-sdk-preview1-python

此版本支持服务主体和托管标识认证。有关更多详细信息,请参阅文档。用户认证将在即将到来的预览版中添加。

此版本仅支持全局Microsoft Entra租户,即使用https://login.microsoftonline.com认证端点的租户。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

azure_identity-1.18.0.tar.gz (263.3 kB 查看哈希值)

上传时间

构建分布

azure_identity-1.18.0-py3-none-any.whl (187.2 kB 查看哈希值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面