ConfidentialClientApplication 类
同样 <xref:ClientApplication.__init__>,除了该 allow_broker 参数应保留 None。
创建应用程序的实例。
构造函数
ConfidentialClientApplication(client_id, client_credential=None, authority=None, validate_authority=True, token_cache=None, http_client=None, verify=True, proxies=None, timeout=None, client_claims=None, app_name=None, app_version=None, client_capabilities=None, azure_region=None, exclude_scopes=None, http_cache=None, instance_discovery=None, allow_broker=None, enable_pii_log=None, oidc_authority=None)
参数
| 名称 | 说明 |
|---|---|
|
client_id
必需
|
在Microsoft Entra 管理中心上注册应用后,应用具有client_id。 |
|
client_credential
|
对于 PublicClientApplication,请在此处使用 None 。 因此 ConfidentialClientApplication,它支持针对不同方案的许多不同输入格式。 支持使用客户端密码。只需在字符串中馈送,例如
|
|
client_claims
|
在版本 0.5.0 中添加:它是由此 ConfidentialClientApplication 私钥签名的额外声明字典。 例如,可以使用 {“client_ip”: “x.x.x.x”}。 还可以替代以下任何默认声明:
默认值: None
|
|
authority
|
标识令牌颁发机构的 URL。 它应采用格式
版本 1.17 中已更改:也可以使用预定义常量和生成器,如下所示:
默认值: None
|
|
validate_authority
|
(可选)打开或关闭颁发机构验证。 此参数默认为 true。 默认值: True
|
|
token_cache
|
设置此 ClientApplication 实例使用的令牌缓存。 默认情况下,将创建和使用内存中缓存。 默认值: None
|
|
http_client
|
(可选)抽象类 HttpClient <的实现msal.oauth2cli.http.http_client> 请求会话实例的默认值。 由于 MSAL 1.11.0,因此将默认会话配置为尝试在连接错误时重试一次。 如果提供自己的http_client,则http_client负责决定是否执行重试。 默认值: None
|
|
verify
|
(可选)它将传递给 基础请求库中的 verify 参数 。如果选择传递自己的 Http 客户端,则此参数不适用 默认值: True
|
|
proxies
|
(可选)它将传递到 基础请求库中的代理参数 。如果选择传递自己的 Http 客户端,则此参数不适用 默认值: None
|
|
timeout
|
(可选)它将传递给 基础请求库中的超时参数 。如果选择传递自己的 Http 客户端,则不适用 默认值: None
|
|
app_name
|
(可选)可以为Microsoft遥测目的提供应用程序名称。 默认值为 None,表示不会传递给Microsoft。 默认值: None
|
|
app_version
|
(可选)可以为Microsoft遥测目的提供应用程序版本。 默认值为 None,表示不会传递给Microsoft。 默认值: None
|
|
client_capabilities
|
(可选)允许配置一个或多个客户端功能,例如 [“CP1”]。 客户端功能旨在通知Microsoft 标识平台(STS)此客户端的功能,以便 STS 可以决定启用某些功能。 例如,如果客户端能够处理 声明质询,STS 可能会向资源发出 持续访问评估(CAE) 访问令牌,知道当资源发出 声明质询 时,客户端将能够处理这些质询。 实现详细信息:客户端功能目前使用网络上的“声明”参数实现。 MSAL 会将它们合并为 声明参数 ,稍后会通过某个获取令牌请求提供这些参数。 默认值: None
|
|
azure_region
|
(可选)指示 MSAL 使用 Entra 区域令牌服务。 此旧功能仅适用于第一方应用程序。 仅支持 支持 4 个值:
注释 区域自动发现已在 VM 和 Azure Functions 上进行测试。 这是不可靠的。 使用此选项的应用程序应配置短超时。 有关更多详细信息和区域字符串的值 看到 https://mms.heiai.top/entra/msal/dotnet/resources/region-discovery-troubleshooting 版本 1.12.0 中的新增功能。 默认值: None
|
|
exclude_scopes
|
(可选)从历史上看,MSAL 硬编码 offline_access 范围,这将使你的应用能够长时间访问用户的数据。
如果应用不必要或不需要,现在可以使用此参数提供范围排除列表,例如 默认值: None
|
|
http_cache
|
MSAL 长期以来一直在缓存令牌 此参数 如果应用是命令行应用(CLI),则希望在不同的 CLI 运行中保留http_cache。 持久化文件格式可能会因 不稳定协议(包括但不限于)而更改,因此实现应容忍意外加载错误。 以下食谱显示了一种执行此操作的方法:
里面 内部 版本 1.16.0 中的新增功能。 默认值: None
|
|
instance_discovery
|
<xref:boolean>
从历史上看,MSAL 将连接到位于获取 此参数默认为 None,这将启用实例发现。 如果你知道一些允许 MSAL 使用 as-is操作的颁发机构,而不涉及任何实例发现,建议的模式是:
如果你事先不知道某些颁发机构,但仍希望 MSAL 接受你提供的任何授权,则可以使用 a 版本 1.19.0 中的新增功能。 默认值: None
|
|
allow_broker
|
<xref:boolean>
Deprecated. 请改用 默认值: None
|
|
enable_pii_log
|
<xref:boolean>
启用后,日志可能包括 PII(个人身份信息)。 这在排查代理行为时很有用。 默认行为为 False。 版本 1.24.0 中的新增功能。 默认值: None
|
|
oidc_authority
|
在版本 1.28.0 中添加:它是标识格式 注意:代理将不用于 OIDC 颁发机构。 默认值: None
|
方法
| acquire_token_for_client |
获取当前机密客户端的令牌,而不是最终用户的令牌。 由于 MSAL Python 1.23,因此它会自动从缓存中查找令牌,并且仅在缓存未命中时向标识提供者发送请求。 |
| acquire_token_on_behalf_of |
使用代表 (OBO) 流获取令牌。 当前应用是一个中间层服务,它使用表示最终用户的令牌调用。 当前应用可以使用此类令牌(a.k.a. 用户断言)来请求另一个令牌来代表该用户访问下游 Web API。 请参阅 此处的详细信息文档 。 当前中间层应用没有用户交互来获得同意。 请参阅本文中,了解如何提前获得中间层应用的同意。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application |
| remove_tokens_for_client |
删除以前通过 acquire_token_for_client 当前客户端获取的所有令牌。 |
acquire_token_for_client
获取当前机密客户端的令牌,而不是最终用户的令牌。
由于 MSAL Python 1.23,因此它会自动从缓存中查找令牌,并且仅在缓存未命中时向标识提供者发送请求。
acquire_token_for_client(scopes, claims_challenge=None, fmi_path=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
scopes
必需
|
(必需)请求访问受保护 API 的范围(资源)。 |
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
|
fmi_path
|
Optional. 联合托管标识 (FMI) 凭据路径。
提供时,它会作为
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
表示来自Microsoft Entra的 json 响应的听写:
|
acquire_token_on_behalf_of
使用代表 (OBO) 流获取令牌。
当前应用是一个中间层服务,它使用表示最终用户的令牌调用。 当前应用可以使用此类令牌(a.k.a. 用户断言)来请求另一个令牌来代表该用户访问下游 Web API。 请参阅 此处的详细信息文档 。
当前中间层应用没有用户交互来获得同意。 请参阅本文中,了解如何提前获得中间层应用的同意。 https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow#gaining-consent-for-the-middle-tier-application
acquire_token_on_behalf_of(user_assertion, scopes, claims_challenge=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
user_assertion
必需
|
此应用已接收的传入令牌 |
|
scopes
必需
|
下游 API(资源)所需的范围。 |
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
表示来自Microsoft Entra的 json 响应的听写:
|
remove_tokens_for_client
删除以前通过 acquire_token_for_client 当前客户端获取的所有令牌。
remove_tokens_for_client()