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