在本快速入门中,将下载并运行 Python Flask Web 应用示例,其中演示如何对用户进行身份验证并调用 Microsoft Graph API。 Microsoft Entra 组织中的用户可以登录到该应用程序。
具有活动订阅的 Azure 帐户。
免费创建帐户
。
一个 Microsoft Entra 租户。 有关详细信息,请参阅
如何获取 Microsoft Entra 租户
。
Python 3+
步骤 1:注册应用程序
本文中的步骤可能因开始使用的门户而略有不同。
按照以下步骤在 Microsoft Entra 管理中心内注册应用程序:
至少以
云应用程序管理员
身份登录到
Microsoft Entra 管理中心
。
如果你有权访问多个租户,请使用顶部菜单中的“设置”图标
,通过“目录 + 订阅”菜单切换到你希望在其中注册应用程序的租户。
浏览至“
标识
”>“
应用程序
”>“
应用注册
”,选择“
新建注册
”。
输入应用程序的
名称
,例如
python-webapp
。
在“支持的帐户类型”下,选择“仅此组织目录中的帐户” 。
在“
重定向 URI
”下,为平台选择“
Web
”。
输入
http://localhost:5000/getAToken
的重定向 URI。 稍后可以随时更改此值。
选择“注册”。
步骤 2:添加客户端密码
示例应用在请求令牌时使用客户端密码来证明其标识。 按照以下步骤为 Python Web 应用创建客户端密码:
在应用的“概述”页上,记下“应用程序(客户端) ID”值,供稍后使用 。
在“管理”下,选择“证书和机密”,然后在“客户端密码”部分,选择“新建客户端密码”
。
输入客户端密码的说明,保留默认的过期时间,然后选择“
添加
”。
将
客户端密码
的
值
保存在安全位置。 需要此值来配置代码,且以后无法检索该值。
Microsoft 建议在将应用程序移动到生产环境之前,为机密客户端应用程序创建凭据时,使用证书而不是客户端密码。 若要详细了解如何使用证书,请参阅
这些说明
。
步骤 3:添加范围
由于此应用要让用户登录,因此需要添加委托的权限:
在“管理”下,选择“API 权限”>“添加权限” 。
确保已选择“Microsoft API”选项卡。
在“常用 Microsoft API”部分,选择“Microsoft Graph”。
在“委托的权限”部分中,确保选择“User.ReadBasic.All”。
如有必要,请使用搜索框。
选择“添加权限”。
步骤 4:下载示例应用
下载 Python 代码示例
或克隆存储库:
git clone https://github.com/Azure-Samples/ms-identity-docs-code-python/
打开在 IDE 中下载的应用程序,并导航到示例应用的根文件夹。
cd flask-web-app
使用 .env.sample 作为指导,在项目的根文件夹中创建 .env 文件。
# The following variables are required for the app to run.
CLIENT_ID=<Enter_your_client_id>
CLIENT_SECRET=<Enter_your_client_secret>
AUTHORITY=<Enter_your_authority_url>
将 CLIENT_ID
的值设置为已注册应用程序的应用程序(客户端)ID,可在概述页上找到。
将 CLIENT_SECRET
的值设置为在已注册应用程序的“证书和机密”中创建的客户端密码。
将 AUTHORITY
的值设置为 https://login.microsoftonline.com/<TENANT_GUID>
。 应用注册概述页上提供了“目录(租户) ID”。
环境变量在 app_config.py 中引用,并保存在单独的 .env 文件中,以使其不受源代码管理。 提供的 .gitignore 文件会阻止签入 .env 文件。
步骤 6:运行示例应用
为应用创建一个虚拟环境:
Windows
macOS/Linux
复制终端中显示的 https URL(例如 https://localhost:5000),并将其粘贴到浏览器中。 建议使用私密浏览器或无痕浏览器会话。
按照步骤操作并输入必要的详细信息以使用 Microsoft 帐户登录。 系统会要求你提供登录的电子邮件地址和密码。
该应用程序将请求权限,以保持访问你已授权访问的数据、登录和阅读配置文件的权限,如图所示。 选择“接受”。
该应用程序使用 identity
包从 Microsoft 标识平台获取访问令牌。 此包基于适用于 Python 的 Microsoft 身份验证库 (MSAL) 构建,可简化 Web 应用中的身份验证和授权。
上一步中获取的访问令牌充当持有者令牌,用于在调用 Microsoft Graph API 时对用户进行身份验证。
通过在以下多部分教程系列中构建用于登录用户和调用受保护的 Web API 的 Python Web 应用进行深入探索:
教程:让用户登录的 Web 应用