通过


从 Python 应用向 Azure 资源进行身份验证的其他方法

本文列出了应用可用于向 Azure 资源进行身份验证的其他方法。 本文中的方法不太常用;可能时,我们诚望你使用使用 Azure SDK 向 Azure 对 Python 应用进行身份验证概述中所述的方法之一。

交互式浏览器身份验证

此方法收集默认系统中的用户凭据,以交互方式通过 InteractiveBrowserCredential 对应用程序进行身份验证。

交互式浏览器身份验证允许应用程序执行交互式登录凭据允许的所有作。 因此,如果你是订阅的所有者或管理员,你的代码就可以访问该订阅中的大多数资源,无需分配任何特定权限。 因此,除了用于试验之外,不建议使用交互式浏览器身份验证。

为应用程序启用交互式浏览器身份验证

执行以下步骤,以支持应用程序通过交互式浏览器流进行身份验证。 这些步骤也适用于稍后介绍的设备代码身份验证。 仅当在代码中使用 InteractiveBrowserCredential 时才需要遵循此过程。

  1. Azure 门户上,导航到 Microsoft Entra ID,然后在左侧菜单中选择“应用注册”

  2. 选择应用注册,然后选择“身份验证”

  3. 在“高级设置”下,为“允许公共客户端流”选择“是”

  4. 选择“保存”应用所做的更改。

  5. 若要授权应用程序使用特定资源,请导航到相关的资源,选择“API 权限”,然后启用 Microsoft Graph 和其他要访问的资源。 默认情况下,Microsoft Graph 处于启用状态。

    重要

    你还必须是租户的管理员,才能在首次登录时同意应用程序。

如果无法在 Active Directory 上配置设备代码流选项,则应用程序可能需要为多租户。 若要进行此更改,请导航到“身份验证”面板,选择“任何组织目录中的帐户”(在“支持的帐户类型”下),然后为“允许公共客户端流”选择“是”

使用 InteractiveBrowserCredential 的示例

以下示例演示了如何使用 InteractiveBrowserCredential 通过 SubscriptionClient 进行身份验证:

# Show Azure subscription information

import os
from azure.identity import InteractiveBrowserCredential
from azure.mgmt.resource import SubscriptionClient

credential = InteractiveBrowserCredential()
subscription_client = SubscriptionClient(credential)

subscription = next(subscription_client.subscriptions.list())
print(subscription.subscription_id)

若要进行更确切的控制,例如设置重定向 URI,可以向 InteractiveBrowserCredential 提供特定参数,例如 redirect_uri

设备代码身份验证

此方法以交互方式在具有有限 UI 的设备(通常是不带键盘的设备)上对用户进行身份验证:

  1. 当应用程序尝试进行身份验证时,凭据会使用 URL 和身份验证代码提示用户。
  2. 用户在支持浏览器的单独设备(计算机、智能手机等)上访问 URL 并输入代码。
  3. 用户遵循浏览器中的正常身份验证过程执行操作。
  4. 身份验证成功后,应用程序便在设备上经过了身份验证。

有关详细信息,请参阅 Microsoft 标识平台和 OAuth 2.0 设备授权流

开发环境中的设备代码身份验证允许应用程序执行交互式登录凭据允许的所有作。 因此,如果你是订阅的所有者或管理员,你的代码就可以访问该订阅中的大多数资源,无需分配任何特定权限。 但是,可以将此方法与特定的客户端 ID(而不是默认值)配合使用,你可以为该客户端 ID 分配特定权限。