注释
1.31.0 版引入了 msal macOS 身份验证代理支持。
使用 macOS 上的身份验证代理可以简化用户使用应用程序Microsoft Entra ID进行身份验证的方式,并利用将来的功能,防止Microsoft Entra ID刷新令牌免于外泄和滥用。
身份验证代理未在 macOS 上预安装,而是由Microsoft开发的应用程序,例如公司门户。 当 macOS 计算机通过终结点管理解决方案(如 Microsoft Intune)注册公司设备群时,通常会安装这些应用程序。 若要了解有关使用 Microsoft Identity Platform 设置的 Apple 设备的详细信息,请参阅适用于 Apple 设备的 Microsoft Enterprise SSO 插件。
Usage
若要使用中转站,除了 PyPI 中的核心 MSAL 之外,还需要安装与中转站相关的包:
pip install msal[broker]>=1.31,<2
Important
如果未安装身份验证代理程序相关包,并且尝试使用身份验证代理程序,则会报错:ImportError: You need to install dependency by: pip install "msal[broker]>=1.31,<2"
通常,在 macOS 上,公共客户端Python应用程序将通过系统浏览器获取令牌。 若要改用安装在 macOS 系统上的身份验证代理,需要在构造函数中PublicClientApplication传递附加参数 - : enable_broker_on_mac
from msal import PublicClientApplication
app = PublicClientApplication(
"CLIENT_ID",
authority="https://login.microsoftonline.com/common",
enable_broker_on_mac =True)
Important
如果要编写跨平台应用程序,则还需要使用enable_broker_on_windows,如将 MSAL Python与 Web 帐户管理器一起使用一文中所述。
除了构造函数更改之外,应用程序还需要支持特定于中转站的重定向 URI。 对于 未签名 的应用程序,URI 为:
msauth.com.msauth.unsignedapp://auth
对于已签名的应用程序,重定向 URI 应为:
msauth.BUNDLE_ID://auth
如果在 Entra 门户中的应用配置中未正确设置重定向 URI,将收到如下所示的错误:
Error detected...
tag=508170375
context=AADSTS50011 Description: (pii), Domain: MSAIMSIDOAuthErrorDomain.Error was thrown in location: Broker
errorCode=-51411
status=Response_Status.Status_Unexpected
配置后,可以调用 acquire_token_interactive 以获取令牌。
result = app.acquire_token_interactive(["User.ReadBasic.All"],
parent_window_handle=app.CONSOLE_WINDOW_HANDLE)
注释
parent_window_handle即使 macOS 上不使用此参数,也需要此参数。 对于 GUI 应用程序,登录提示框的显示位置将根据具体情况临时确定,目前无法固定到特定窗口。 在将来的更新中,此参数将用于确定 实际的 父窗口。
令牌缓存
身份验证代理处理刷新和访问令牌缓存。 无需设置自定义缓存。
支持的 macOS 版本和体系结构
macOS 代理支持以下配置:
| Component | 支持的版本 |
|---|---|
| 建筑 | ARM64 (Apple Silicon) 和 x64 (Intel) |
| macOS 版本 | macOS 10.15 (Catalina) 及更高版本 |
Tip
建议更新到最新的 macOS 版本,以确保与最新的安全功能和中转站功能兼容。