PublicClientApplication class

PublicClientApplication 类是库公开的对象,用于在单页应用程序中执行身份验证和授权函数,以便获取 JWT 令牌,如 OAuth 2.0 授权代码流和 PKCE 规范中所述。

方法

acquireTokenByCode(AuthorizationCodeRequest)

此函数从 eSTS 令牌终结点兑换授权代码(作为代码传递)。 应使用机密客户端获取此授权代码来获取spa_code。 对于正常授权代码获取和兑换,此 API 并未进行缩进。

兑换此授权代码不需要 PKCE,因为它是由机密客户端获取的。

acquireTokenPopup(PopupRequest)

当想要通过打开用户的浏览器中的弹出窗口获取 API 的access_token时使用

acquireTokenRedirect(RedirectRequest)

当希望通过将用户的浏览器窗口重定向到授权终结点来获取 API 的access_token时使用。 此函数将重定向页面,因此此函数后面的任何代码都不会执行。

重要提示:不建议使用依赖于 Promise 解析的代码。 此函数将从当前浏览器窗口导航。 它当前返回 Promise,以反映此函数中运行的代码的异步性质。

acquireTokenSilent(SilentRequest)

以无提示方式获取给定范围集的访问令牌。 如果发出并行请求,则返回当前处理承诺。

addEventCallback(EventCallbackFunction, EventType[])

将事件回调添加到数组

addPerformanceCallback(PerformanceCallbackFunction)

注册回调以接收性能事件。

clearCache(ClearCacheRequest)

从浏览器缓存中清除令牌和帐户。

createPublicClientApplication(Configuration)

创建 StandardController 并将其传递给 PublicClientApplication

disableAccountStorageEvents()

删除在不同浏览器选项卡或窗口中从 localstorage 添加或删除用户帐户时发出事件的事件侦听器

enableAccountStorageEvents()

添加在不同浏览器选项卡或窗口中从 localstorage 添加或删除用户帐户时发出事件的事件侦听器

getAccount(AccountFilter)

返回缓存中找到的第一个与传入的帐户筛选器匹配的帐户。

getAccountByHomeId(string)

返回与 homeAccountId 匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null

getAccountByLocalId(string)

返回与 localAccountId 匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null

getAccountByUsername(string)

返回与用户名匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null。 此 API 为方便起见提供,但 getAccountById 应用于最佳可靠性

getActiveAccount()

获取当前活动帐户

getAllAccounts(AccountFilter)

返回缓存中与可选筛选器匹配的所有帐户。 如果未提供筛选器,则返回所有帐户。

getLogger()

返回记录器实例

getTokenCache()

获取应用程序的令牌缓存。

handleRedirectPromise(string)

事件处理程序函数,允许用户在重定向流期间加载 PublicClientApplication 对象后触发事件。 应在重定向身份验证流所涉及的所有页面加载上调用此项。

hydrateCache(AuthenticationResult, PopupRequest | RedirectRequest | SilentRequest | Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>)

使用 AuthenticationResult 对象中的令牌和帐户冻结缓存

initialize(InitializeApplicationRequest)

初始值设定项函数执行异步启动任务,例如连接到 WAM 扩展

initializeWrapperLibrary(WrapperSKU, string)

包装库 (Angular & React) 调用,以设置传递到遥测、记录器等的 SKU 和版本。

loginPopup(PopupRequest)

在用户浏览器中打开弹出窗口来启动登录过程时使用

loginRedirect(RedirectRequest)

通过将用户的浏览器重定向到授权终结点来启动登录过程时使用。 此函数将重定向页面,因此此函数后面的任何代码都不会执行。

重要提示:不建议使用依赖于 Promise 解析的代码。 此函数将从当前浏览器窗口导航。 它当前返回 Promise,以反映此函数中运行的代码的异步性质。

logout(EndSessionRequest)

弃用的注销函数。 请改用 logoutRedirect 或 logoutPopup

logoutPopup(EndSessionPopupRequest)

清除当前用户的本地缓存,然后打开一个弹出窗口,提示用户注销服务器

logoutRedirect(EndSessionRequest)

用于注销当前用户,并将用户重定向到 postLogoutRedirectUri。 默认行为是将用户重定向到 window.location.href

removeEventCallback(string)

从回调数组中删除具有提供的 ID 的回调

removePerformanceCallback(string)

删除向 addPerformanceCallback 注册的回调。

setActiveAccount(null | AccountInfo)

设置要用作活动帐户的帐户。 如果未将帐户传递给 acquireToken API,则 MSAL 将使用此活动帐户。

setLogger(Logger)

将配置中的默认记录器集替换为新的记录器以及新配置

setNavigationClient(INavigationClient)

设置导航客户端

ssoSilent(Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>)

此函数使用隐藏的 iframe 从 eSTS 提取授权代码。 在某些情况下,这可能不起作用:

  • 使用智能跟踪防护形式的任何浏览器
  • 如果没有与服务建立的会话

在这些情况下,必须在弹出窗口或完整帧重定向内完成请求。

对于需要交互的情况,不能发送包含 prompt=none 的请求。

如果刷新令牌已过期,则可以使用此函数以无提示方式提取一组新的令牌,前提是服务器上的会话仍然存在。

构造函数详细信息

PublicClientApplication(Configuration, IController)

new PublicClientApplication(configuration: Configuration, controller?: IController)

参数

configuration
Configuration

MSAL PublicClientApplication 实例的对象

controller
IController

方法详细信息

acquireTokenByCode(AuthorizationCodeRequest)

此函数从 eSTS 令牌终结点兑换授权代码(作为代码传递)。 应使用机密客户端获取此授权代码来获取spa_code。 对于正常授权代码获取和兑换,此 API 并未进行缩进。

兑换此授权代码不需要 PKCE,因为它是由机密客户端获取的。

function acquireTokenByCode(request: AuthorizationCodeRequest): Promise<AuthenticationResult>

参数

返回

如果引发错误,则此函数完成或拒绝的承诺。

acquireTokenPopup(PopupRequest)

当想要通过打开用户的浏览器中的弹出窗口获取 API 的access_token时使用

function acquireTokenPopup(request: PopupRequest): Promise<AuthenticationResult>

参数

request
PopupRequest

返回

如果引发错误,则此函数完成或拒绝的承诺。

acquireTokenRedirect(RedirectRequest)

当希望通过将用户的浏览器窗口重定向到授权终结点来获取 API 的access_token时使用。 此函数将重定向页面,因此此函数后面的任何代码都不会执行。

重要提示:不建议使用依赖于 Promise 解析的代码。 此函数将从当前浏览器窗口导航。 它当前返回 Promise,以反映此函数中运行的代码的异步性质。

function acquireTokenRedirect(request: RedirectRequest): Promise<void>

参数

request
RedirectRequest

返回

Promise<void>

acquireTokenSilent(SilentRequest)

以无提示方式获取给定范围集的访问令牌。 如果发出并行请求,则返回当前处理承诺。

function acquireTokenSilent(silentRequest: SilentRequest): Promise<AuthenticationResult>

参数

silentRequest
SilentRequest

返回

addEventCallback(EventCallbackFunction, EventType[])

将事件回调添加到数组

function addEventCallback(callback: EventCallbackFunction, eventTypes?: EventType[]): null | string

参数

eventTypes

EventType[]

返回

null | string

addPerformanceCallback(PerformanceCallbackFunction)

注册回调以接收性能事件。

function addPerformanceCallback(callback: PerformanceCallbackFunction): string

参数

返回

string

clearCache(ClearCacheRequest)

从浏览器缓存中清除令牌和帐户。

function clearCache(logoutRequest?: ClearCacheRequest): Promise<void>

参数

logoutRequest
ClearCacheRequest

返回

Promise<void>

createPublicClientApplication(Configuration)

创建 StandardController 并将其传递给 PublicClientApplication

static function createPublicClientApplication(configuration: Configuration): Promise<IPublicClientApplication>

参数

configuration
Configuration

{Configuration}

返回

disableAccountStorageEvents()

删除在不同浏览器选项卡或窗口中从 localstorage 添加或删除用户帐户时发出事件的事件侦听器

function disableAccountStorageEvents()

enableAccountStorageEvents()

添加在不同浏览器选项卡或窗口中从 localstorage 添加或删除用户帐户时发出事件的事件侦听器

function enableAccountStorageEvents()

getAccount(AccountFilter)

返回缓存中找到的第一个与传入的帐户筛选器匹配的帐户。

function getAccount(accountFilter: AccountFilter): null | AccountInfo

参数

accountFilter
AccountFilter

返回

null | AccountInfo

如果找不到任何帐户,则缓存中找到的第一个帐户与提供的筛选器匹配,或为 null。

getAccountByHomeId(string)

警告

现已弃用此 API。

  • Use getAccount instead

返回与 homeAccountId 匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null

function getAccountByHomeId(homeAccountId: string): null | AccountInfo

参数

homeAccountId

string

返回

null | AccountInfo

存储在 MSAL 中的帐户对象

getAccountByLocalId(string)

警告

现已弃用此 API。

  • Use getAccount instead

返回与 localAccountId 匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null

function getAccountByLocalId(localId: string): null | AccountInfo

参数

localId

string

返回

null | AccountInfo

存储在 MSAL 中的帐户对象

getAccountByUsername(string)

警告

现已弃用此 API。

  • Use getAccount instead

返回与用户名匹配的已登录帐户。 (在成功登录时创建帐户对象),如果未找到匹配的帐户,则为 null。 此 API 为方便起见提供,但 getAccountById 应用于最佳可靠性

function getAccountByUsername(userName: string): null | AccountInfo

参数

userName

string

返回

null | AccountInfo

存储在 MSAL 中的帐户对象

getActiveAccount()

获取当前活动帐户

function getActiveAccount(): null | AccountInfo

返回

null | AccountInfo

getAllAccounts(AccountFilter)

返回缓存中与可选筛选器匹配的所有帐户。 如果未提供筛选器,则返回所有帐户。

function getAllAccounts(accountFilter?: AccountFilter): AccountInfo[]

参数

accountFilter
AccountFilter

(可选) 筛选器以缩小返回的帐户范围

返回

缓存中的 AccountInfo 对象的数组

getLogger()

返回记录器实例

function getLogger(): Logger

返回

getTokenCache()

获取应用程序的令牌缓存。

function getTokenCache(): ITokenCache

返回

handleRedirectPromise(string)

事件处理程序函数,允许用户在重定向流期间加载 PublicClientApplication 对象后触发事件。 应在重定向身份验证流所涉及的所有页面加载上调用此项。

function handleRedirectPromise(hash?: string): Promise<null | AuthenticationResult>

参数

hash

string

要处理的哈希。 默认为 window.location.hash 的当前值。 仅当要处理的响应未包含在当前值中时,才需要显式提供。

返回

Promise<null | AuthenticationResult>

令牌响应或 null。 如果返回值为 null,则未检测到身份验证重定向。

hydrateCache(AuthenticationResult, PopupRequest | RedirectRequest | SilentRequest | Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>)

使用 AuthenticationResult 对象中的令牌和帐户冻结缓存

function hydrateCache(result: AuthenticationResult, request: PopupRequest | RedirectRequest | SilentRequest | Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>): Promise<void>

参数

request

PopupRequest | RedirectRequest | SilentRequest | Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>

用于获取 AuthenticationResult 的请求对象

返回

Promise<void>

initialize(InitializeApplicationRequest)

初始值设定项函数执行异步启动任务,例如连接到 WAM 扩展

function initialize(request?: InitializeApplicationRequest): Promise<void>

参数

request
InitializeApplicationRequest

{?InitializeApplicationRequest}

返回

Promise<void>

initializeWrapperLibrary(WrapperSKU, string)

包装库 (Angular & React) 调用,以设置传递到遥测、记录器等的 SKU 和版本。

function initializeWrapperLibrary(sku: WrapperSKU, version: string)

参数

version

string

loginPopup(PopupRequest)

在用户浏览器中打开弹出窗口来启动登录过程时使用

function loginPopup(request?: PopupRequest): Promise<AuthenticationResult>

参数

request
PopupRequest

返回

如果引发错误,则此函数完成或拒绝的承诺。

loginRedirect(RedirectRequest)

通过将用户的浏览器重定向到授权终结点来启动登录过程时使用。 此函数将重定向页面,因此此函数后面的任何代码都不会执行。

重要提示:不建议使用依赖于 Promise 解析的代码。 此函数将从当前浏览器窗口导航。 它当前返回 Promise,以反映此函数中运行的代码的异步性质。

function loginRedirect(request?: RedirectRequest): Promise<void>

参数

request
RedirectRequest

返回

Promise<void>

logout(EndSessionRequest)

警告

现已弃用此 API。

弃用的注销函数。 请改用 logoutRedirect 或 logoutPopup

function logout(logoutRequest?: EndSessionRequest): Promise<void>

参数

logoutRequest
EndSessionRequest

返回

Promise<void>

logoutPopup(EndSessionPopupRequest)

清除当前用户的本地缓存,然后打开一个弹出窗口,提示用户注销服务器

function logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise<void>

参数

logoutRequest
EndSessionPopupRequest

返回

Promise<void>

logoutRedirect(EndSessionRequest)

用于注销当前用户,并将用户重定向到 postLogoutRedirectUri。 默认行为是将用户重定向到 window.location.href

function logoutRedirect(logoutRequest?: EndSessionRequest): Promise<void>

参数

logoutRequest
EndSessionRequest

返回

Promise<void>

removeEventCallback(string)

从回调数组中删除具有提供的 ID 的回调

function removeEventCallback(callbackId: string)

参数

callbackId

string

removePerformanceCallback(string)

删除向 addPerformanceCallback 注册的回调。

function removePerformanceCallback(callbackId: string): boolean

参数

callbackId

string

返回

boolean

setActiveAccount(null | AccountInfo)

设置要用作活动帐户的帐户。 如果未将帐户传递给 acquireToken API,则 MSAL 将使用此活动帐户。

function setActiveAccount(account: null | AccountInfo)

参数

account

null | AccountInfo

setLogger(Logger)

将配置中的默认记录器集替换为新的记录器以及新配置

function setLogger(logger: Logger)

参数

logger
Logger

记录器实例

setNavigationClient(INavigationClient)

设置导航客户端

function setNavigationClient(navigationClient: INavigationClient)

参数

navigationClient
INavigationClient

ssoSilent(Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>)

此函数使用隐藏的 iframe 从 eSTS 提取授权代码。 在某些情况下,这可能不起作用:

  • 使用智能跟踪防护形式的任何浏览器
  • 如果没有与服务建立的会话

在这些情况下,必须在弹出窗口或完整帧重定向内完成请求。

对于需要交互的情况,不能发送包含 prompt=none 的请求。

如果刷新令牌已过期,则可以使用此函数以无提示方式提取一组新的令牌,前提是服务器上的会话仍然存在。

function ssoSilent(request: Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>): Promise<AuthenticationResult>

参数

request

Partial<Omit<CommonAuthorizationUrlRequest, "responseMode" | "earJwk" | "codeChallenge" | "codeChallengeMethod" | "requestedClaimsHash" | "platformBroker">>

SsoSilentRequest

返回

如果引发错误,则此函数完成或拒绝的承诺。