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扩展通过编辑器进行身份验证。使用DefaultAzureCredential
或VisualStudioCodeCredential
的应用程序可以在本地运行时使用此账户进行应用程序的身份验证调用。
要在Visual Studio Code中进行身份验证,请确保已安装Azure Account扩展。安装后,打开命令面板并运行Azure: 登录命令。
这是一个已知问题,即VisualStudioCodeCredential
与Azure Account扩展版本高于0.9.11时不起作用。该问题的长期解决方案正在开发中。同时,请考虑通过Azure CLI进行身份验证。
通过Azure CLI进行身份验证
DefaultAzureCredential
和AzureCliCredential
可以作为已登录到Azure CLI的用户进行身份验证。要登录到Azure CLI,请运行az login
。在默认网络浏览器上,Azure CLI会启动浏览器以进行用户身份验证。
如果没有默认浏览器可用,az login
将使用设备代码身份验证流程。此流程也可以通过运行az login --use-device-code
手动选择。
通过Azure开发者CLI进行身份验证
在IDE外编码的开发者也可以使用Azure开发者CLI进行身份验证。使用DefaultAzureCredential
或AzureDeveloperCliCredential
的应用程序可以在本地运行时使用此账户进行应用程序的身份验证调用。
要使用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
通过 环境变量 读取指定的账户信息并使用它进行身份验证。 - 工作负载身份 - 如果应用程序部署到启用了托管身份的 Azure Kubernetes 服务,
DefaultAzureCredential
将使用它进行身份验证。 - 托管身份 - 如果应用程序部署到启用了托管身份的 Azure 主机,
DefaultAzureCredential
将使用它进行身份验证。 - Azure CLI - 如果用户通过 Azure CLI 的
az login
命令登录,DefaultAzureCredential
将以该用户身份进行身份验证。 - Azure PowerShell - 如果用户通过 Azure PowerShell 的
Connect-AzAccount
命令登录,DefaultAzureCredential
将以该用户身份进行身份验证。 - Azure 开发者 CLI - 如果开发者通过 Azure 开发者 CLI 的
azd auth login
命令进行身份验证,DefaultAzureCredential
将使用该账户进行身份验证。 - 交互式浏览器 - 如果启用,
DefaultAzureCredential
将通过默认浏览器与用户进行交互式身份验证。此凭据类型默认是禁用的。
续传策略
从版本 1.14.0 开始,DefaultAzureCredential
尝试使用所有开发凭据进行身份验证,直到成功,而不考虑之前开发凭据遇到的任何错误。例如,开发凭据可能会尝试获取令牌并失败,因此 DefaultAzureCredential
将继续到流中的下一个凭据。已部署的服务凭据如果在尝试获取令牌时无法获取,将通过抛出异常来停止流。在版本 1.14.0 之前,如果令牌检索失败,开发凭据会停止身份验证流程,但现在不再是这种情况。
这允许在具有可预测已部署行为的条件下尝试机器上的所有开发凭据。
关于 VisualStudioCodeCredential
的说明
由于一个 已知问题,VisualStudioCodeCredential
已从 DefaultAzureCredential
令牌链中删除。在未来的版本中解决该问题后,此更改将得到恢复。
示例
以下提供了以下示例
使用 DefaultAzureCredential
进行身份验证
有关如何配置环境以使用 DefaultAzureCredential
的更多详细信息,请参阅类的 参考文档。
此示例演示了使用 DefaultAzureCredential
从 azure-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 服务的托管标识身份验证:
- Azure App Service 和 Azure Functions
- Azure Arc
- Azure Cloud Shell
- Azure Kubernetes Service
- Azure Service Fabric
- Azure 虚拟机
- 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 账户扩展 |
环境变量
DefaultAzureCredential 和 EnvironmentCredential 可以通过环境变量进行配置。每种类型的认证都需要特定的变量值
具有秘密的托管服务帐户
变量名 | 值 |
---|---|
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.ClientAuthenticationError
。ClientAuthenticationError
具有一个message
属性,描述了认证失败的原因。当由DefaultAzureCredential
或ChainedTokenCredential
引发时,消息会收集链中每个凭据的错误消息。
有关处理特定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以获取任何额外的问题或评论。
发行历史
1.18.0 (2024-09-19)
新增功能
- 所有凭证现在都实现了
SupportsTokenInfo
或AsyncSupportsTokenInfo
协议。每个凭证现在都有一个get_token_info
方法,该方法返回一个AccessTokenInfo
对象。get_token_info
方法是get_token
的替代方法,可以更好地支持更复杂的身份验证场景。(#36882)- 何时刷新令牌的信息现在保存在
AccessTokenInfo
中(如果可用)。
- 何时刷新令牌的信息现在保存在
其他更改
- 在
ManagedIdentityCredential
中添加了身份配置验证,以避免非确定状态(例如,同时指定了resource_id
和object_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) - 加强了
AzureCliCredential
和AzureDeveloperCliCredential
在确定用户是否登录时的错误检查。现在,如果错误中存在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-core
的TokenCredential
协议。(#25175)
1.14.0b2(2023-07-11)
新增功能
- 在
DefaultAzureCredential
中添加了对workload_identity_tenant_id
的支持。
1.14.0b1(2023-06-06)
新增功能
- 在 DefaultAzureCredential 中发现缓存的令牌凭据已过期时,继续尝试下一个凭据。(#30441)
其他更改
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
关键字参数,现在可以通过启动子进程获取令牌的凭据具有可配置的超时。这解决了这些进程可能需要比当前默认超时值更长时间的情况。受影响的凭据是AzureCliCredential
、AzureDeveloperCliCredential
和AzurePowerShellCredential
。(注意:对于DefaultAzureCredential
,developer_credential_timeout
关键字参数允许用户将其传播到认证链中的AzureCliCredential
、AzureDeveloperCliCredential
和AzurePowerShellCredential
。)(#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)
重大更改
- 默认情况下,将
VisualStudioCodeCredential
从DefaultAzureCredential
令牌链中排除,因为由于问题#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)
新增功能
- 为
AzureCliCredential
和AzurePowerShellCredential
添加了指定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
AzureCliCredential
的tenant_id
- 从
DefaultAzureCredential
令牌链中删除了VisualStudioCodeCredential
EnvironmentCredential
的AZURE_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中不可用。
已修复的错误
其他更改
- 已移除
resource_id
,请使用identity_config
代替。 - 将
ClientAssertionCredential
的get_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_MULTITENANTAUTH
为True
来完全禁用多租户身份验证功能。azure.identity.RegionalAuthority
已被删除。- 为
CertificateCredential
和ClientSecretCredential
删除了regional_authority
参数。 AzureApplicationCredential
已被删除。OnBehalfOfCredential
构造函数中的client_credential
已被删除。请使用client_secret
或client_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_hook
和raw_response_hook
关键字参数初始化凭据。这些参数的值应分别为接受PipelineRequest
和PipelineResponse
的回调函数。例如:ManagedIdentityCredential(raw_request_hook=lambda request: print(request.http_request.url))
- 减少了冗余的
ChainedTokenCredential
和DefaultAzureCredential
记录。在 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"。
- 当
CertificateCredential
和ClientSecretCredential
通过关键字参数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_cache
和enable_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)
- 从
DeviceCodeCredential
、InteractiveBrowserCredential
和UsernamePasswordCredential
中移除了authenticate
方法 - 从
CertificateCredential
、ClientSecretCredential
、DeviceCodeCredential
、InteractiveBrowserCredential
和UsernamePasswordCredential
中移除了allow_unencrypted_cache
和enable_persistent_cache
关键字参数 - 从
DeviceCodeCredential
和InteractiveBrowserCredential
中移除了disable_automatic_authentication
关键字参数 - 从
SharedTokenCacheCredential
中移除了allow_unencrypted_cache
关键字参数 - 移除了类
AuthenticationRecord
和AuthenticationRequiredError
- 从
- 从
ManagedIdentityCredential
中移除了identity_config
关键字参数(在 1.5.0b1 中添加)
更改
DeviceCodeCredential
的参数client_id
现在是可选的。如果不提供,凭证将使用 Azure 开发应用程序对用户进行身份验证。(#14354)- 当使用包含无效字符的租户 ID 构造时,凭证将引发
ValueError
(#14821) - 将最低 msal 版本提升至 1.6.0
新增
修复
- 防止
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
。要配置此类凭证,请使用authority
和tenant_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 中重新引入。传递以下关键字参数通常不会导致运行时错误,但参数没有效果。
- 从
DeviceCodeCredential
、InteractiveBrowserCredential
和UsernamePasswordCredential
中移除了authenticate
方法 - 从
CertificateCredential
、ClientSecretCredential
、DeviceCodeCredential
、InteractiveBrowserCredential
和UsernamePasswordCredential
中移除了allow_unencrypted_cache
和enable_persistent_cache
关键字参数 - 从
DeviceCodeCredential
和InteractiveBrowserCredential
中移除了disable_automatic_authentication
关键字参数 - 从
SharedTokenCacheCredential
中移除了allow_unencrypted_cache
关键字参数 - 移除了类
AuthenticationRecord
和AuthenticationRequiredError
- 从
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)CertificateCredential
和ClientSecretCredential
可以选择将获取的访问令牌存储在持久缓存中。要启用此功能,请使用enable_persistent_cache=True
构建凭据。在 Linux 上,持久缓存需要 libsecret 和pygobject
。如果这些不可用或无法使用(例如,在 SSH 会话中),则加载持久缓存将引发错误。您可以配置凭据以使用不加密的缓存作为回退,通过使用关键字参数allow_unencrypted_cache=True
构建。(#11347)AzureCliCredential
在 Azure CLI 中没有用户登录时会引发CredentialUnavailableError
。(#11819)AzureCliCredential
和VSCodeCredential
,分别允许以在 Azure CLI 和 Visual Studio Code 中签入的标识身份进行身份验证,可以从azure.identity
和azure.identity.aio
中导入。azure.identity.aio.AuthorizationCodeCredential.get_token()
不再接受可选关键字参数executor
或loop
。此方法的前版本没有正确使用这些参数,引发了异常,并且此版本的内部更改使它们变得过时。InteractiveBrowserCredential
在无法在localhost
上启动 HTTP 服务器时引发CredentialUnavailableError
。(#11665)- 在构建
DefaultAzureCredential
时,您现在可以配置InteractiveBrowserCredential
的租户 ID。如果没有指定,凭据将使用用户的默认租户进行身份验证。要指定不同的租户,请使用关键字参数interactive_browser_tenant_id
或设置环境变量AZURE_TENANT_ID
。(#11548) SharedTokenCacheCredential
可以使用用户凭据提供的AuthenticationRecord
进行初始化。(#11448)- 在 1.4.0b3 中添加到
DeviceCodeCredential
和InteractiveBrowserCredential
的用户身份验证 API 现在也在UsernamePasswordCredential
上可用。(#11449) - 在 1.4.0b3 中添加到
DeviceCodeCredential
和InteractiveBrowserCredential
的可选持久缓存现在也在 Linux 和 macOS 以及 Windows 上可用。(#11134)- 在 Linux 上,持久缓存需要 libsecret 和
pygobject
。如果这些不可用,或者 libsecret 无法使用(例如,在 SSH 会话中),则加载持久缓存将引发错误。您可以通过使用关键字参数allow_unencrypted_cache=True
配置凭据以使用不加密的缓存作为回退。
- 在 Linux 上,持久缓存需要 libsecret 和
1.4.0b3(2020-05-04)
EnvironmentCredential
正确地使用AZURE_TENANT_ID
的值初始化UsernamePasswordCredential
。(#11127)- 构造函数关键字参数
authority
和AZURE_AUTHORITY_HOST
的值可以可选地指定 "https" 方案。例如,"https://login.microsoftonline.us" 和 "login.microsoftonline.us" 都是有效的。(#10819) DeviceCodeCredential
和InteractiveBrowserCredential
的用户身份验证新 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)
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_id
和client_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)
依赖项更改
- 采用
msal_extensions
0.1.2 - 将
msal
的要求限制为 >=0.4.1, <1.0.0
1.0.0b4 (2019-10-07)
新功能
AuthorizationCodeCredential
使用之前获得的授权代码进行身份验证。有关此身份验证流的信息,请参阅 Microsoft Entra 的 授权代码文档。- 多云支持:客户端凭据接受 Azure Active Directory 身份验证端点的权限作为
authority
关键字参数。已知权限定义在azure.identity.KnownAuthorities
中。默认权限是 Azure 公共云,login.microsoftonline.com
(KnownAuthorities.AZURE_PUBLIC_CLOUD
)。在 Azure 政府中运行的应用程序将使用KnownAuthorities.AZURE_GOVERNMENT
而不是。
from azure.identity import DefaultAzureCredential, KnownAuthorities credential = DefaultAzureCredential(authority=KnownAuthorities.AZURE_GOVERNMENT)
破坏性变更
- 从
InteractiveBrowserCredential
中删除了client_secret
参数
修复和改进
1.0.0b3 (2019-09-10)
新功能
SharedTokenCacheCredential
使用存储在由 Microsoft 应用程序共享的本地缓存中的令牌进行身份验证。这使得 Azure SDK 客户端在您在 Visual Studio 2019 中登录后可以静默地进行身份验证。当共享缓存可用且设置环境变量AZURE_USERNAME
时,DefaultAzureCredential
将包括SharedTokenCacheCredential
。有关更多信息,请参阅 README。
依赖项更改
- 新依赖项:
msal-extensions
0.1.1
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
- 如果您稍后想回退到需要azure-core 1.0.0b1版本,无论是本库还是其他Azure SDK库,必须明确安装azure-core 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认证端点的租户。
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
azure_identity-1.18.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f567579a65d8932fa913c76eddf3305101a15e5727a5e4aa5df649a0f553d4c3 |
|
MD5 | f5d7a325f578be4b6ebed8a6cab98375 |
|
BLAKE2b-256 | b35d1c7da35dd640b4a95a38f980bb6b0b56c4e91d5b3d518ac11a2c4ebf5f62 |
azure_identity-1.18.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bccf6106245b49ff41d0c4cd7b72851c5a2ba3a32cef7589da246f5727f26f02 |
|
MD5 | 30c5720b54c872bc642c8a905c3a2bfa |
|
BLAKE2b-256 | b0711d1bb387b6acaa5daa3e703c70dde3d54823ccd229bd6730de6e724f296e |