客户端应用程序

Microsoft 身份验证库(MSAL)Python支持两种类型的客户端应用程序:公共客户端应用程序和机密客户端应用程序。 客户端类型的区别在于它们是否能够与授权服务器进行安全认证,以及是否能够持有用于证明身份的敏感信息,从而确保这些信息在其访问范围内不会被用户访问或获知。 本文重点介绍如何使用 MSAL Python初始化这些应用程序。

先决条件

了解 公共和机密客户端应用程序的基本概念。

实例化应用程序

需要应用注册才能启动应用。 在Microsoft Entra 管理中心中注册应用。 在注册页面中,您需要:

  • 应用程序客户端标识器。 这是 GUID 形式的字符串。
  • 标识提供者 URL(实例)和应用程序的登录受众。 这两个参数统称为 authority
  • 如有必要,租户标识符(也是 GUID),如果你编写的是仅限组织范围的业务线应用程序(也称为单租户应用程序)。
  • 如果要生成机密客户端应用,请以字符串或证书的形式创建应用程序机密。
  • 对于 Web 应用程序,请设置Microsoft Entra ID用于返回代码的重定向 URL。 对于桌面应用程序,如果不依赖于身份验证代理,请添加 http://localhost

实例化公共客户端应用程序

公共客户端应用程序使用 PublicClientApplication 类。

import msal

app = msal.PublicClientApplication(
    "client_id",
    authority="authority",
    )

实例化机密客户端应用程序

机密客户端应用程序使用该 ConfidentialClientApplication 类。

import msal

app = msal.ConfidentialClientApplication(
    "client_id",
    authority="authority",
    client_credential="client_secret",
    )

Caching

实例化客户端应用程序时,可以使用两个参数来定义缓存首选项。 这些参数包括: token_cachehttp_cache

  • token_cache 设置客户端应用程序实例使用的令牌缓存。 默认情况下,会创建和使用内存中缓存。 有关详细信息,请参阅 MSAL Python中的令牌缓存
  • MSAL Python版本 1.16+ 中提供了http_cache。 这会自动缓存一些有限数量的非肯 http 响应,因此在某些情况下,长期存在的 PublicClientApplicationConfidentialClientApplication 实例的性能更高且响应迅速。 如果未提供 http_cache 参数,MSAL 将使用内存中的字典对象。 如果应用是命令行应用(CLI),则希望在不同的 CLI 运行中保留 http_cache 。 有关详细信息,请参阅 参考指南

后续步骤

获取应用的令牌