在本快速入门中,将下载并运行 Python Flask Web 应用示例,其中演示如何对用户进行身份验证并调用 Microsoft Graph API。 Microsoft Entra 组织中的用户可以登录到该应用程序。

  • 具有活动订阅的 Azure 帐户。 免费创建帐户
  • 一个 Microsoft Entra 租户。 有关详细信息,请参阅 如何获取 Microsoft Entra 租户
  • Python 3+
  • 步骤 1:注册应用程序

    本文中的步骤可能因开始使用的门户而略有不同。

    按照以下步骤在 Microsoft Entra 管理中心内注册应用程序:

  • 至少以 云应用程序管理员 身份登录到 Microsoft Entra 管理中心
  • 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你希望在其中注册应用程序的租户。
  • 浏览至“ 标识 ”>“ 应用程序 ”>“ 应用注册 ”,选择“ 新建注册 ”。
  • 输入应用程序的 名称 ,例如 python-webapp
  • 在“支持的帐户类型”下,选择“仅此组织目录中的帐户” 。
  • 在“ 重定向 URI ”下,为平台选择“ Web ”。
  • 输入 http://localhost:5000/getAToken 的重定向 URI。 稍后可以随时更改此值。
  • 选择“注册”。
  • 步骤 2:添加客户端密码

    示例应用在请求令牌时使用客户端密码来证明其标识。 按照以下步骤为 Python Web 应用创建客户端密码:

  • 在应用的“概述”页上,记下“应用程序(客户端) ID”值,供稍后使用 。
  • 在“管理”下,选择“证书和机密”,然后在“客户端密码”部分,选择“新建客户端密码”
  • 输入客户端密码的说明,保留默认的过期时间,然后选择“ 添加 ”。
  • 客户端密码 保存在安全位置。 需要此值来配置代码,且以后无法检索该值。
  • Microsoft 建议在将应用程序移动到生产环境之前,为机密客户端应用程序创建凭据时,使用证书而不是客户端密码。 若要详细了解如何使用证书,请参阅 这些说明

    步骤 3:添加范围

    由于此应用要让用户登录,因此需要添加委托的权限:

  • 在“管理”下,选择“API 权限”>“添加权限” 。
  • 确保已选择“Microsoft API”选项卡。
  • 在“常用 Microsoft API”部分,选择“Microsoft Graph”。
  • 在“委托的权限”部分中,确保选择“User.ReadBasic.All”。 如有必要,请使用搜索框。
  • 选择“添加权限”。
  • 步骤 4:下载示例应用

    下载 Python 代码示例 或克隆存储库:

    git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
    

    步骤 5:配置示例应用

  • 打开在 IDE 中下载的应用程序,并导航到示例应用的根文件夹。

    cd flask-web-app
    
  • 使用 .env.sample 作为指导,在项目的根文件夹中创建 .env 文件。

    # The following variables are required for the app to run.
    CLIENT_ID=<Enter_your_client_id>
    CLIENT_SECRET=<Enter_your_client_secret>
    AUTHORITY=<Enter_your_authority_url>
    
  • CLIENT_ID 的值设置为已注册应用程序的应用程序(客户端)ID,可在概述页上找到。
  • CLIENT_SECRET 的值设置为在已注册应用程序的“证书和机密”中创建的客户端密码。
  • AUTHORITY 的值设置为 https://login.microsoftonline.com/<TENANT_GUID>。 应用注册概述页上提供了“目录(租户) ID”。
  • 环境变量在 app_config.py 中引用,并保存在单独的 .env 文件中,以使其不受源代码管理。 提供的 .gitignore 文件会阻止签入 .env 文件。

    步骤 6:运行示例应用

  • 为应用创建一个虚拟环境:

    Windows macOS/Linux
  • 复制终端中显示的 https URL(例如 https://localhost:5000),并将其粘贴到浏览器中。 建议使用私密浏览器或无痕浏览器会话。

  • 按照步骤操作并输入必要的详细信息以使用 Microsoft 帐户登录。 系统会要求你提供登录的电子邮件地址和密码。

  • 该应用程序将请求权限,以保持访问你已授权访问的数据、登录和阅读配置文件的权限,如图所示。 选择“接受”。

  • 该应用程序使用 identity从 Microsoft 标识平台获取访问令牌。 此包基于适用于 Python 的 Microsoft 身份验证库 (MSAL) 构建,可简化 Web 应用中的身份验证和授权。

  • 上一步中获取的访问令牌充当持有者令牌,用于在调用 Microsoft Graph API 时对用户进行身份验证。

    通过在以下多部分教程系列中构建用于登录用户和调用受保护的 Web API 的 Python Web 应用进行深入探索:

    教程:让用户登录的 Web 应用

  •