AzureAD/microsoft-authentication-extensions-for-python

GitHub: AzureAD/microsoft-authentication-extensions-for-python

微软官方Python库,为MSAL提供跨平台加密的Token缓存持久化存储能力。

Stars: 43 | Forks: 33

# Microsoft Authentication Extensions for Python Microsoft Authentication Extensions for Python 提供了安全的机制,使客户端应用程序能够执行跨平台的 token cache 序列化和持久化。它为 [Microsoft Authentication Library for Python (MSAL)](https://github.com/AzureAD/microsoft-authentication-library-for-python) 提供了额外支持。 MSAL Python 默认支持内存缓存,并提供 [SerializableTokenCache](https://msal-python.readthedocs.io/en/latest/#msal.SerializableTokenCache) 来执行缓存序列化。您可以在 MSAL Python [文档](https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-python-token-cache-serialization)中阅读更多相关信息。开发者需要在多个平台上实现自己的缓存持久化,而 Microsoft Authentication Extensions 使这一过程变得更加简单。 支持的平台包括 Windows、Mac 和 Linux。 - Windows - 使用 [DPAPI](https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection) 进行加密。 - MAC - 使用 MAC KeyChain。 - Linux - 使用 [LibSecret](https://wiki.gnome.org/Projects/Libsecret) 进行加密。 ## 安装 您可以在 [Pypi](https://pypi.org/project/msal-extensions/) 上找到 Microsoft Authentication Extensions for Python。 1. 如果您尚未安装,请将 Python 环境的 [pip 安装和/或升级](https://pip.pypa.io/en/stable/installing/)到最新版本。我们使用 pip 18.1 进行了测试。 2. 运行 `pip install msal-extensions`。 ## 版本 该库遵循 [语义化版本控制](http://semver.org/)。 您可以在 [Releases](https://github.com/AzureAD/microsoft-authentication-extensions-for-python/releases) 中找到每个版本的更改。 ## 用法 ### 创建供 MSAL 使用的加密 token cache 文件 Microsoft Authentication Extensions 库提供了 `PersistedTokenCache`,它接受一个依赖于平台的持久化实例。然后可以使用此 token cache 来实例化 MSAL Python 中的 `PublicClientApplication`。 token cache 在内部包含文件锁和自动重载行为。 以下是适用于多个平台的此模式示例(摘自完整的[示例](https://github.com/AzureAD/microsoft-authentication-extensions-for-python/blob/dev/sample/token_cache_sample.py)): ``` def build_persistence(location, fallback_to_plaintext=False): """Build a suitable persistence instance based your current OS""" try: return build_encrypted_persistence(location) except: if not fallback_to_plaintext: raise logging.warning("Encryption unavailable. Opting in to plain text.") return FilePersistence(location) persistence = build_persistence("token_cache.bin") print("Type of persistence: {}".format(persistence.__class__.__name__)) print("Is this persistence encrypted?", persistence.is_encrypted) cache = PersistedTokenCache(persistence) ``` 现在您可以在 MSAL 应用程序中像这样使用它: ``` app = msal.PublicClientApplication("my_client_id", token_cache=cache) ``` ### 创建加密持久化文件以存储您自己的数据 以下是适用于多个平台的此模式示例(摘自完整的[示例](https://github.com/AzureAD/microsoft-authentication-extensions-for-python/blob/dev/sample/persistence_sample.py)): ``` def build_persistence(location, fallback_to_plaintext=False): """Build a suitable persistence instance based your current OS""" try: return build_encrypted_persistence(location) except: # pylint: disable=bare-except if not fallback_to_plaintext: raise logging.warning("Encryption unavailable. Opting in to plain text.") return FilePersistence(location) persistence = build_persistence("storage.bin", fallback_to_plaintext=False) print("Type of persistence: {}".format(persistence.__class__.__name__)) print("Is this persistence encrypted?", persistence.is_encrypted) data = { # It can be anything, here we demonstrate an arbitrary json object "foo": "hello world", "bar": "", "service_principle_1": "blah blah...", } persistence.save(json.dumps(data)) assert json.loads(persistence.load()) == data ``` ## Python 版本支持策略 若 Python 版本距离 [Python 软件基金会 (PSF) 定义的生命周期结束 (end-of-life)](https://devguide.python.org/versions/#versions) 已超过 6 个月,该库将不再为其提供新功能更新。 ## 社区帮助与支持 我们利用 Stack Overflow 与社区合作支持 Azure Active Directory 及其 SDK(包括此 SDK)! 我们强烈建议您在 Stack Overflow 上提问(我们都在那里!)。 同时,请浏览现有问题,看看是否有人已经提出过您的问题。 我们建议您使用 “msal” 标签,以便我们能够看到它! 以下是 Stack Overflow 上关于 MSAL 的最新问答: [http://stackoverflow.com/questions/tagged/msal](http://stackoverflow.com/questions/tagged/msal) ## 贡献 所有代码均根据 MIT 许可证授权,我们会在 GitHub 上积极进行分类管理。 本项目欢迎贡献和建议。大多数贡献要求您同意 贡献者许可协议 (CLA),声明您有权并且确实授予我们 使用您的贡献的权利。有关详细信息,请访问 https://cla.microsoft.com。 当您提交拉取请求时,CLA 机器人将自动确定您是否需要提供 CLA,并相应地标记 PR(例如,标签、评论)。只需按照机器人提供的 说明操作即可。对于所有使用我们 CLA 的仓库,您只需执行一次此操作。 ## 我们重视并遵守 Microsoft 开源行为准则 本项目已采用 [Microsoft 开源行为准则](https://opensource.microsoft.com/codeofconduct/)。有关更多信息,请参阅[行为准则常见问题解答](https://opensource.microsoft.com/codeofconduct/faq/),或通过 [opencode@microsoft.com](mailto:opencode@microsoft.com) 联系我们以提出任何其他问题或意见。
标签:Azure AD, Credential Management, Linux LibSecret, Mac KeyChain, MSAL, OAuth2, Windows DPAPI, 令牌缓存, 安全存储, 微软认证, 操作系统检测, 数据加密, 数据持久化, 文件锁, 缓存序列化, 逆向工具