MSAL 中用于Python的自定义令牌缓存序列化

在适用于 Python 的 Microsoft 身份验证库 (MSAL) 中,创建 ConfidentialClientApplication 的实例时,默认会提供一个内存中的令牌缓存,该缓存会在整个应用会话期间持续存在。

令牌缓存的序列化(方便应用的不同会话来访问它)不是现成可用的。Python 版 MSAL 可用于无法访问文件系统的应用类型,例如 Web 应用。 若要在使用适用于 Python 的 MSAL 的应用中实现持久令牌缓存,必须提供自定义令牌缓存序列化。

序列化令牌缓存的策略因是编写公共客户端应用程序(桌面)还是机密客户端应用程序(Web 应用、Web API 或守护程序应用)而异。

公共客户端应用程序的令牌缓存

公共客户端应用程序在用户的设备上运行,并管理单个用户的令牌。 在这种情况下,可以将整个缓存序列化为文件。 请记住,如果你的应用或其他应用可以同时访问缓存,请记得提供文件锁定。 有关如何在不锁定的情况下将令牌缓存序列化到文件的简单示例,请参阅类参考文档中的示例 SerializableTokenCache

Web 应用的令牌缓存(机密客户端应用程序)

对于 Web 应用或 Web API,可以使用会话、Redis 缓存或数据库来存储令牌缓存。 每个用户(每个帐户)应该有一个令牌缓存,因此请确保为每个帐户序列化令牌缓存。

后续步骤

有关如何对 Windows、Linux Web 应用或 Web API 使用令牌缓存的示例,请参阅 ms-identity-python-webapp。 该示例适用于调用Microsoft 图形 API的 Web 应用。