跳转到主要内容

Microsoft Authentication Library (MSAL) for Python 库使您的应用能够通过支持使用行业标准OAuth2和OpenID Connect对Microsoft Azure Active Directory账户(AAD)和Microsoft账户(MSA)进行认证,从而访问Microsoft云。

项目描述

Microsoft Authentication Library (MSAL) for Python

dev分支 参考文档 不同平台下的下载次数 最近MSAL版本的下载次数 基准图
Build status Documentation Status Downloads Download monthly 📉

Python 微软身份验证库允许应用程序与微软身份平台集成。它允许您使用微软身份(微软 Entra ID外部身份微软账户Azure AD B2C账户)登录用户或应用程序,并获取令牌以调用Microsoft Graph或您在微软身份平台注册的自己的API。它使用行业标准OAuth2和OpenID Connect协议构建。

不确定这是否是您要寻找的SDK?还有其他微软身份SDK在这里

快速链接

入门指南 文档 示例 支持 反馈

支持场景

单击以下缩略图访问带有可点击链接的大型地图,链接到适当的示例。

Map effect won't work inside github's markdown file, so we have to use a thumbnail here to lure audience to a real static website

安装

您可以在Pypi上找到MSAL Python。

  1. 如果您还没有,请安装和/或升级Python环境的pip到最新版本。我们使用的是pip 18.1。
  2. 像往常一样,只需运行pip install msal

版本

此库遵循语义版本控制

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

使用方法

在使用MSAL Python(或任何MSAL SDK)之前,您必须将应用程序注册到微软身份平台

使用MSAL Python获取令牌遵循以下3步模式。(注意:这是高级概念模式。对于不同的流程,可能会有一些变化。它们在此存储库中托管的可运行示例中展示。)

  1. MSAL建议在公开客户端应用程序和机密客户端应用程序之间进行清晰的分离。因此,您首先创建一个PublicClientApplicationConfidentialClientApplication实例,并在应用程序的生命周期内重用它。以下示例显示了一个PublicClientApplication

    from msal import PublicClientApplication
    app = PublicClientApplication(
        "your_client_id",
        authority="https://login.microsoftonline.com/Enter_the_Tenant_Name_Here")
    

    稍后,每次您需要访问令牌时,您首先

    result = None  # It is just an initial value. Please follow instructions below.
    
  2. MSAL中的API模型为您提供了对如何利用令牌缓存的明确控制。这部分在技术上不是必需的,但我们强烈建议您利用MSAL缓存的力量。它会自动为您处理令牌刷新。

    # We now check the cache to see
    # whether we already have some accounts that the end user already used to sign in before.
    accounts = app.get_accounts()
    if accounts:
        # If so, you could then somehow display these accounts and let end user choose
        print("Pick the account you want to use to proceed:")
        for a in accounts:
            print(a["username"])
        # Assuming the end user chose this one
        chosen = accounts[0]
        # Now let's try to find a token in cache for this account
        result = app.acquire_token_silent(["your_scope"], account=chosen)
    
  3. 或者缓存中没有合适的令牌,或者您选择跳过前面的步骤,现在您需要向AAD发送请求以获取令牌。根据您的客户端类型和场景,有不同方法。这里我们展示了一个占位符流程。

    if not result:
        # So no suitable token exists in cache. Let's get a new one from AAD.
        result = app.acquire_token_by_one_of_the_actual_method(..., scopes=["User.Read"])
    if "access_token" in result:
        print(result["access_token"])  # Yay!
    else:
        print(result.get("error"))
        print(result.get("error_description"))
        print(result.get("correlation_id"))  # You may need this when reporting a bug
    

有关MSAL Python功能和使用方法的更多详细信息,请参阅Wiki页面。

从ADAL迁移

如果您的应用程序正在使用ADAL Python,我们建议您更新为使用MSAL Python。将不会在ADAL Python中完成任何新功能工作。

请参阅ADAL到MSAL迁移指南。

路线图

您可以在我们的Wiki上发布的路线图中跟踪MSAL Python的最新更新和计划。

示例和文档

MSAL Python 支持多种 应用程序类型和身份验证场景。建议阅读有关身份验证场景身份验证协议的通用文档。

我们提供了一套完整的示例应用程序文档,以帮助您开始学习 Microsoft 标识平台。

社区帮助和支持

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

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

提交反馈

我们希望听到您对这本库的看法。请完成此简短调查。

安全报告

如果您在我们的库或服务中发现安全漏洞,请尽可能详细地向secure@microsoft.com报告。您的提交可能符合通过Microsoft 奖金计划获得奖金的资格。请勿将安全问题发布到 GitHub Issues 或任何其他公共网站。我们将在收到信息后不久与您联系。我们鼓励您通过访问此页面并订阅安全顾问警报来接收安全事件的通知。

贡献

所有代码均根据 MIT 许可证授权,我们在 GitHub 上积极进行分类。我们热情欢迎贡献和反馈。在开始之前,请阅读贡献指南

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

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

项目详情


发布历史 发布通知 | RSS 源

下载文件

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

源分布

msal-1.31.0.tar.gz (144.9 kB 查看哈希值)

上传时间

构建分布

msal-1.31.0-py3-none-any.whl (113.1 kB 查看哈希值)

上传时间 Python 3

由以下支持