跳转到主要内容

Microsoft Authentication Library扩展(MSAL EX)提供了一种持久化API,可以在Windows、macOS和Linux上加密存储您的数据。并发数据访问将通过文件锁定机制进行协调。

项目描述

Microsoft Authentication Extensions for Python

Microsoft Authentication Extensions for Python为客户端应用程序提供了安全的机制来执行跨平台的令牌缓存序列化和持久化。它为Microsoft Authentication Library for Python (MSAL)提供了额外的支持。

MSAL Python默认支持内存缓存,并提供了SerializableTokenCache来执行缓存序列化。您可以在MSAL Python文档中了解更多信息。开发者需要实现自己的跨多个平台的缓存持久化,而Microsoft Authentication Extensions使这变得更加简单。

支持的平台是Windows、Mac和Linux。

  • Windows - 使用DPAPI进行加密。
  • MAC - 使用MAC KeyChain。
  • Linux - 使用LibSecret进行加密。

注意:建议仅在桌面应用程序等公共客户端应用程序中使用此库以支持缓存持久性。在Web应用程序中,这可能会导致扩展性和性能问题。建议Web应用程序在会话中持久化缓存。请参阅此Web应用程序示例

安装

您可以在Pypi上找到Microsoft Authentication Extensions for Python。

  1. 如果您尚未安装,请安装或升级Python环境的pip到最新版本。我们使用pip 18.1进行了测试。
  2. 运行pip install msal-extensions

版本

此库遵循语义版本控制

您可以在发行版下找到每个版本的更改。

用法

创建用于MSAL的加密令牌缓存文件

Microsoft Authentication Extensions库提供了PersistedTokenCache,它接受一个平台依赖的持久化实例。此令牌缓存可以用来在MSAL Python中实例化PublicClientApplication

令牌缓存底层包括文件锁和自动重新加载行为。

以下是针对多个平台的此模式示例(来自完整的示例

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)

创建用于存储您自己的数据的加密持久性文件

以下是针对多个平台的此模式示例(来自完整的示例

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)定义的生命周期结束周期之前6个月将不会从本库接收新功能更新。

社区帮助和支持

我们利用Stack Overflow与社区合作,支持Azure Active Directory及其SDK,包括此SDK!我们强烈建议您在Stack Overflow上提问(我们都在那里!)同时浏览现有问题,看看是否有人提出过您的问题。

我们建议您使用"msal"标签,这样我们就能看到它!以下是Stack Overflow上关于MSAL的最新Q&A:http://stackoverflow.com/questions/tagged/msal

贡献

所有代码均使用MIT许可,并且我们在GitHub上积极进行分类。

此项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权,并且确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.microsoft.com

当您提交拉取请求时,CLA-bot将自动确定您是否需要提供CLA,并相应地装饰PR(例如,标签、注释)。只需遵循机器人提供的说明即可。您只需在整个使用我们的CLA的仓库中做一次。

我们重视并遵守Microsoft开源代码行为准则

本项目采用了Microsoft开源代码行为准则。有关更多信息,请参阅行为准则FAQ或通过opencode@microsoft.com联系以提出任何额外的问题或评论。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源代码分发

msal_extensions-1.2.0.tar.gz (22.4 kB 查看散列值)

上传时间 源代码

构建分发

msal_extensions-1.2.0-py3-none-any.whl (19.3 kB 查看散列值)

上传时间 Python 3

由以下支持