ClientApplication 类
通常不直接使用此类。 请改用其子类: PublicClientApplication 和 ConfidentialClientApplication。
创建应用程序的实例。
构造函数
ClientApplication(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_by_auth_code_flow |
验证要重定向回的身份验证响应,并获取令牌。 它自动提供 nonce 保护。 |
| acquire_token_by_authorization_code |
授权代码授予的后半部分。 |
| acquire_token_by_refresh_token |
基于从其他位置获取的刷新令牌(RT)获取令牌。 仅当从其他位置具有旧的 RT,现在想要将它们迁移到 MSAL 时,才使用此方法。 调用此方法会导致新令牌自动存储到 MSAL 中。 如果已在使用 MSAL,则无需使用此方法。 MSAL 在其令牌缓存内自动维护 RT,并在调用 acquire_token_silent时检索访问令牌。 |
| acquire_token_by_username_password |
通过用户凭据获取给定资源的令牌。 有关用户名密码流的约束,请参阅此页面。 https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication [已弃用]此 API 已弃用用于公共客户端流,将在将来的版本中删除。 请改用更安全的流。 迁移指南: https://aka.ms/msal-ropc-migration |
| acquire_token_silent |
获取给定帐户的访问令牌,而无需用户交互。 它具有与 . acquire_token_silent_with_error. 相同的参数。 区别在于返回值的行为。 此方法将缓存空和刷新错误合并为一个返回值 None。 如果应用在令牌缓存查找过程中不关心确切的令牌刷新错误,则此方法更简单,建议使用此方法。 |
| acquire_token_silent_with_error |
获取给定帐户的访问令牌,而无需用户交互。 可以通过从缓存中查找有效的访问令牌或从缓存中查找有效的刷新令牌,然后自动使用它来兑换新的访问令牌来完成。 此方法会将缓存与令牌刷新错误区分开来。 如果应用在令牌缓存查找过程中处理确切的令牌刷新错误,则此方法适用。 否则,建议使用其他方法 acquire_token_silent 。 |
| get_accounts |
获取以前登录的帐户列表,即缓存中存在。 稍后可以使用 acquire_token_silent 帐户查找其令牌。 |
| get_authorization_request_url |
构造用于启动授权代码授予的 URL。 |
| initiate_auth_code_flow |
启动身份验证代码流。 稍后,当响应到达redirect_uri时,可以使用 acquire_token_by_auth_code_flow 它来完成身份验证/授权。 |
| is_pop_supported |
如果此客户端支持所有权证明访问令牌,则返回 True。 |
| remove_account |
注销并忘记令牌缓存中的我 |
acquire_token_by_auth_code_flow
验证要重定向回的身份验证响应,并获取令牌。
它自动提供 nonce 保护。
acquire_token_by_auth_code_flow(auth_code_flow, auth_response, scopes=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
auth_code_flow
必需
|
返回 initiate_auth_code_flow的同一听写。 |
|
auth_response
必需
|
从身份验证服务器接收的查询字符串的听写。 |
|
scopes
|
请求访问受保护 API 的范围(资源)。 大多数时候,你可以将其留空。 如果请求用户同意多个资源,则需要在此处提供所需 initiate_auth_code_flow资源的子集。 OAuth2 主要用于单一实例服务,其中令牌始终用于同一资源,并且唯一的更改位于范围中。 在Microsoft Entra中,可以为多个第三方资源颁发令牌。 可以向多个资源请求授权代码,但兑换时,令牌仅适用于一个目标收件人(称为受众)。 因此,开发人员需要指定一个范围,以便我们可以限制要为相应受众颁发的令牌。 默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
acquire_token_by_authorization_code
授权代码授予的后半部分。
acquire_token_by_authorization_code(code, scopes, redirect_uri=None, nonce=None, claims_challenge=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
code
必需
|
授权服务器返回的授权代码。 |
|
scopes
必需
|
(必需)请求访问受保护 API 的范围(资源)。 如果请求用户同意多个资源,通常会在此处提供 AuthCode 中所需的部分内容。 OAuth2 主要用于单一实例服务,其中令牌始终用于同一资源,并且唯一的更改位于范围中。 在Microsoft Entra中,可以为多个第三方资源颁发令牌。 可以向多个资源请求授权代码,但兑换时,令牌仅适用于一个目标收件人(称为受众)。 因此,开发人员需要指定一个范围,以便我们可以限制要为相应受众颁发的令牌。 |
|
nonce
|
如果在调用 get_authorization_request_url时提供了 nonce,则还应在此处提供相同的 nonce,以便我们将对其进行验证。 如果 ID 令牌中的 nonce 不匹配,将引发异常。 默认值: None
|
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
|
redirect_uri
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
表示来自Microsoft Entra的 json 响应的听写:
|
acquire_token_by_refresh_token
基于从其他位置获取的刷新令牌(RT)获取令牌。
仅当从其他位置具有旧的 RT,现在想要将它们迁移到 MSAL 时,才使用此方法。 调用此方法会导致新令牌自动存储到 MSAL 中。
如果已在使用 MSAL,则无需使用此方法。 MSAL 在其令牌缓存内自动维护 RT,并在调用 acquire_token_silent时检索访问令牌。
acquire_token_by_refresh_token(refresh_token, scopes, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
refresh_token
必需
|
旧的刷新令牌,作为字符串。 |
|
scopes
必需
|
范围与此旧 RT 相关联。 每个范围都需要采用 Microsoft 标识平台 (v2) 格式。 请参阅 “范围”而不是资源。 |
返回
| 类型 | 说明 |
|---|---|
|
acquire_token_by_username_password
通过用户凭据获取给定资源的令牌。
有关用户名密码流的约束,请参阅此页面。 https://github.com/AzureAD/microsoft-authentication-library-for-python/wiki/Username-Password-Authentication
[已弃用]此 API 已弃用用于公共客户端流,将在将来的版本中删除。 请改用更安全的流。 迁移指南: https://aka.ms/msal-ropc-migration
acquire_token_by_username_password(username, password, scopes, claims_challenge=None, auth_scheme=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
username
必需
|
通常采用电子邮件地址形式的 UPN。 |
|
password
必需
|
密码。 |
|
scopes
必需
|
请求访问受保护 API 的范围(资源)。 |
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
|
auth_scheme
|
你可以提供一个 版本 1.26.0 中的新增功能。 默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
表示来自Microsoft Entra的 json 响应的听写:
|
acquire_token_silent
获取给定帐户的访问令牌,而无需用户交互。
它具有与 . acquire_token_silent_with_error. 相同的参数。 区别在于返回值的行为。 此方法将缓存空和刷新错误合并为一个返回值 None。 如果应用在令牌缓存查找过程中不关心确切的令牌刷新错误,则此方法更简单,建议使用此方法。
acquire_token_silent(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
scopes
必需
|
|
|
account
必需
|
|
|
authority
|
默认值: None
|
|
force_refresh
|
默认值: False
|
|
claims_challenge
|
默认值: None
|
|
auth_scheme
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
acquire_token_silent_with_error
获取给定帐户的访问令牌,而无需用户交互。
可以通过从缓存中查找有效的访问令牌或从缓存中查找有效的刷新令牌,然后自动使用它来兑换新的访问令牌来完成。
此方法会将缓存与令牌刷新错误区分开来。 如果应用在令牌缓存查找过程中处理确切的令牌刷新错误,则此方法适用。 否则,建议使用其他方法 acquire_token_silent 。
acquire_token_silent_with_error(scopes, account, authority=None, force_refresh=False, claims_challenge=None, auth_scheme=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
scopes
必需
|
(必需)请求访问受保护 API 的范围(资源)。 |
|
account
必需
|
(必需)返回 get_accounts的帐户对象之一。
从 MSAL Python 1.23 开始,输入 |
|
force_refresh
|
如果为 True,它将跳过访问令牌查找,并尝试查找刷新令牌以获取新的访问令牌。 默认值: False
|
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
|
auth_scheme
|
你可以提供一个 版本 1.26.0 中的新增功能。 默认值: None
|
|
authority
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
get_accounts
获取以前登录的帐户列表,即缓存中存在。
稍后可以使用 acquire_token_silent 帐户查找其令牌。
get_accounts(username=None)
参数
| 名称 | 说明 |
|---|---|
|
username
|
仅筛选具有此用户名的帐户。 不区分大小写。 默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
帐户对象列表。 每个帐户都是一个听写。 目前,我们仅记录其“用户名”字段。 你的应用可以选择向最终用户显示这些信息,并允许用户选择其帐户之一继续。 |
get_authorization_request_url
构造用于启动授权代码授予的 URL。
get_authorization_request_url(scopes, login_hint=None, state=None, redirect_uri=None, response_type='code', prompt=None, nonce=None, domain_hint=None, claims_challenge=None, **kwargs)
参数
| 名称 | 说明 |
|---|---|
|
scopes
必需
|
(必需)请求访问受保护 API 的范围(资源)。 |
|
state
|
OAuth2 建议用于 CSRF 保护。 默认值: None
|
|
login_hint
|
用户的标识符。 通常为用户主体名称(UPN)。 默认值: None
|
|
redirect_uri
|
从颁发机构收到响应时要返回到的地址。 默认值: None
|
|
response_type
|
对于 OAuth2 授权代码授予,默认值为“code”。 可以使用其他内容,例如“id_token”或“token”,这会触发隐式授权,但 不建议这样做。 默认值: code
|
|
prompt
|
默认情况下,不会发送任何提示值,甚至不会发送字符串 默认值: None
|
|
nonce
|
用于缓解重播攻击的加密随机值。 另请参阅 OIDC 规范。 默认值: None
|
|
domain_hint
|
可以是“使用者”或“组织”之一,也可以是租户域“contoso.com”。 如果包含,它将跳过用户在登录页面上经历的基于电子邮件的发现过程,从而导致略微简化的用户体验。 有关 Auth Code Flow 文档 和 domain_hint 文档中可用的可能值的详细信息。 默认值: None
|
|
claims_challenge
|
claims_challenge参数请求资源提供程序以 www-authenticate 标头中claims_challenge指令的形式请求的特定声明,这些声明将从 UserInfo 终结点和/或 ID 令牌和/或访问令牌中返回。 它是 JSON 对象的字符串,其中包含从这些位置请求的声明列表。 默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
作为字符串的授权 URL。 |
initiate_auth_code_flow
启动身份验证代码流。
稍后,当响应到达redirect_uri时,可以使用 acquire_token_by_auth_code_flow 它来完成身份验证/授权。
initiate_auth_code_flow(scopes, redirect_uri=None, state=None, prompt=None, login_hint=None, domain_hint=None, claims_challenge=None, max_age=None, response_mode=None)
参数
| 名称 | 说明 |
|---|---|
|
scopes
必需
|
它是区分大小写的字符串列表。 |
|
redirect_uri
|
Optional. 如果未指定,服务器将使用预注册的服务器。 默认值: None
|
|
state
|
客户端用来维护请求和回调之间的状态的不透明值。 如果不存在,此库将在内部自动生成一个库。 默认值: None
|
|
prompt
|
默认情况下,不会发送任何提示值,甚至不会发送字符串 默认值: None
|
|
login_hint
|
Optional. 用户的标识符。 通常为用户主体名称(UPN)。 默认值: None
|
|
domain_hint
|
可以是“使用者”或“组织”之一,也可以是租户域“contoso.com”。 如果包含,它将跳过用户在登录页面上经历的基于电子邮件的发现过程,从而导致略微简化的用户体验。 有关 Auth Code Flow 文档 和 domain_hint 文档中可用的可能值的详细信息。 默认值: None
|
|
max_age
|
可选。 最大身份验证期限。 指定自上次对 End-User 主动进行身份验证以来允许的运行时间(以秒为单位)。 如果已用时间大于此值,Microsoft 标识平台将主动重新对最终用户进行身份验证。 MSAL Python还会自动验证 ID 令牌中的auth_time。 版本 1.15 中的新增功能。 默认值: None
|
|
response_mode
|
可选。 指定应返回响应参数的方法。
默认值等效 注释 应将 Web 框架配置为接受form_post响应,而不是查询响应。 虽然此参数仍然有效,但在将来的版本中将删除此参数。 使用基于查询的响应模式不太安全,应避免使用。 默认值: None
|
|
claims_challenge
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
身份验证代码流。 它是以下形式的听写:
调用方应:
|
is_pop_supported
如果此客户端支持所有权证明访问令牌,则返回 True。
is_pop_supported()
remove_account
注销并忘记令牌缓存中的我
remove_account(account)
参数
| 名称 | 说明 |
|---|---|
|
account
必需
|
|
属性
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID
ACQUIRE_TOKEN_BY_AUTHORIZATION_CODE_ID = '832'
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID
ACQUIRE_TOKEN_BY_DEVICE_FLOW_ID = '622'
ACQUIRE_TOKEN_BY_REFRESH_TOKEN
ACQUIRE_TOKEN_BY_REFRESH_TOKEN = '85'
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID
ACQUIRE_TOKEN_BY_USERNAME_PASSWORD_ID = '301'
ACQUIRE_TOKEN_FOR_CLIENT_ID
ACQUIRE_TOKEN_FOR_CLIENT_ID = '730'
ACQUIRE_TOKEN_INTERACTIVE
ACQUIRE_TOKEN_INTERACTIVE = '169'
ACQUIRE_TOKEN_ON_BEHALF_OF_ID
ACQUIRE_TOKEN_ON_BEHALF_OF_ID = '523'
ACQUIRE_TOKEN_SILENT_ID
ACQUIRE_TOKEN_SILENT_ID = '84'
ATTEMPT_REGION_DISCOVERY
ATTEMPT_REGION_DISCOVERY = True
DISABLE_MSAL_FORCE_REGION
DISABLE_MSAL_FORCE_REGION = False
GET_ACCOUNTS_ID
GET_ACCOUNTS_ID = '902'
REMOVE_ACCOUNT_ID
REMOVE_ACCOUNT_ID = '903'