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,以反映此函式中執行的程式碼非同步特性。

acquireTokenSilent(SilentRequest)

靜默取得給定範圍的存取權杖。 如果有平行請求,則會回傳目前正在處理承諾。

addEventCallback(EventCallbackFunction, EventType[])

新增事件回調到 array

addPerformanceCallback(PerformanceCallbackFunction)

註冊回撥以接收效能事件。

clearCache(ClearCacheRequest)

清除瀏覽器快取中的代幣和帳號。

createPublicClientApplication(Configuration)

建立 StandardController 並將其傳達給 PublicClientApplication

disableAccountStorageEvents()

移除當使用者帳號在不同瀏覽器分頁或視窗中從 localstorage 新增或移除時會發出事件的事件監聽器

enableAccountStorageEvents()

新增事件監聽器,當使用者帳號在不同瀏覽器分頁或視窗中新增或移除 localstorage 時,會發出事件

getAccount(AccountFilter)

回傳快取中第一個符合已輸入帳戶過濾器的帳號。

getAccountByHomeId(string)

回傳已登入的帳號,與 homeAccountId 相符。 (帳號物件在成功登入時建立)或當找不到匹配帳號時為空

getAccountByLocalId(string)

會回傳與 localAccountID 相符的登入帳號。 (帳號物件在成功登入時建立)或當找不到匹配帳號時為空

getAccountByUsername(string)

會回傳已登入帳號的對應使用者名稱。 (帳號物件會在成功登入時建立)或在找不到匹配帳號時為空。 此 API 是為了方便而提供,但為了最佳可靠性,應使用 getAccountById

getActiveAccount()

取得目前活躍的帳號

getAllAccounts(AccountFilter)

回傳快取中所有符合可選篩選器的帳號。 若未提供過濾器,所有帳號都會被歸還。

getLogger()

回傳記錄器實例

getTokenCache()

取得應用程式的標記快取。

handleRedirectPromise(string)

事件處理程式功能,允許使用者在 PublicClientApplication 物件載入後,於重定向流程中觸發事件。 所有涉及重定向認證流程的頁面載入時,都應啟動此功能。

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

Hydrates 將憑證和帳號存放在 AuthenticationResult 物件中

initialize(InitializeApplicationRequest)

初始化器函式用於執行非同步啟動任務,例如連接 WAM 擴充功能

initializeWrapperLibrary(WrapperSKU, string)

由包裝函式庫(Angular 和 React)呼叫,設定 SKU 和版本,並傳給遙測、記錄器等。

loginPopup(PopupRequest)

在啟動登入流程時,透過在使用者瀏覽器中開啟彈出視窗

loginRedirect(RedirectRequest)

在啟動登入流程時,透過將使用者的瀏覽器導向到授權端點來使用。 這個函式會重新導向頁面,因此跟隨這個函式的程式碼將無法執行。

重要提示:不建議使用依賴於承諾解析的程式碼。 這個功能會從目前的瀏覽器視窗中自動移動。 目前它會回傳一個 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)

Sets 導航客戶端

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

此功能利用隱藏的 iframe 從 eSTS 取得授權碼。 有些情況下,這方法可能無法奏效:

  • 任何使用智慧追蹤預防的瀏覽器
  • 如果服務沒有建立固定的會話

在這些情況下,請求必須透過彈出視窗或全畫面重定向來完成。

在需要互動的情況下,不能發送提示=無的請求。

如果你的刷新權杖已經過期,只要伺服器上的工作還存在,你可以用這個函式靜默地取得一組新的權杖。

建構函式詳細資料

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,以反映此函式中執行的程式碼非同步特性。

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

參數

request
RedirectRequest

傳回

Promise<void>

acquireTokenSilent(SilentRequest)

靜默取得給定範圍的存取權杖。 如果有平行請求,則會回傳目前正在處理承諾。

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

參數

silentRequest
SilentRequest

傳回

  • 當此功能完成時承諾會被履行,若產生錯誤則被拒絕。 回傳 AuthenticationResult 物件

addEventCallback(EventCallbackFunction, EventType[])

新增事件回調到 array

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

{配置}

傳回

disableAccountStorageEvents()

移除當使用者帳號在不同瀏覽器分頁或視窗中從 localstorage 新增或移除時會發出事件的事件監聽器

function disableAccountStorageEvents()

enableAccountStorageEvents()

新增事件監聽器,當使用者帳號在不同瀏覽器分頁或視窗中新增或移除 localstorage 時,會發出事件

function enableAccountStorageEvents()

getAccount(AccountFilter)

回傳快取中第一個符合已輸入帳戶過濾器的帳號。

function getAccount(accountFilter: AccountFilter): null | AccountInfo

參數

accountFilter
AccountFilter

傳回

null | AccountInfo

快取中第一個符合所提供過濾器的帳號,若找不到則為空。

getAccountByHomeId(string)

警告

此 API 現已淘汰。

  • Use getAccount instead

回傳已登入的帳號,與 homeAccountId 相符。 (帳號物件在成功登入時建立)或當找不到匹配帳號時為空

function getAccountByHomeId(homeAccountId: string): null | AccountInfo

參數

homeAccountId

string

傳回

null | AccountInfo

MSAL 中儲存的帳號物件

getAccountByLocalId(string)

警告

此 API 現已淘汰。

  • Use getAccount instead

會回傳與 localAccountID 相符的登入帳號。 (帳號物件在成功登入時建立)或當找不到匹配帳號時為空

function getAccountByLocalId(localId: string): null | AccountInfo

參數

localId

string

傳回

null | AccountInfo

MSAL 中儲存的帳號物件

getAccountByUsername(string)

警告

此 API 現已淘汰。

  • Use getAccount instead

會回傳已登入帳號的對應使用者名稱。 (帳號物件會在成功登入時建立)或在找不到匹配帳號時為空。 此 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>

標記回應或空回應。 如果回傳值為空,表示未偵測到任何認證重定向。

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

Hydrates 將憑證和帳號存放在 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,以反映此函式中執行的程式碼非同步特性。

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)

Sets 導航客戶端

function setNavigationClient(navigationClient: INavigationClient)

參數

navigationClient
INavigationClient

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

此功能利用隱藏的 iframe 從 eSTS 取得授權碼。 有些情況下,這方法可能無法奏效:

  • 任何使用智慧追蹤預防的瀏覽器
  • 如果服務沒有建立固定的會話

在這些情況下,請求必須透過彈出視窗或全畫面重定向來完成。

在需要互動的情況下,不能發送提示=無的請求。

如果你的刷新權杖已經過期,只要伺服器上的工作還存在,你可以用這個函式靜默地取得一組新的權杖。

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

傳回

當此功能完成時承諾會被履行;若提出錯誤則被拒絕。