驗證 JavaScript API
Fabric 前端提供適用於 Fabric 工作負載的 JavaScript API,以便在 Microsoft Entra ID 中獲取其應用程式的權杖。 本文會說明此 API。
API
acquireAccessToken(params: AcquireAccessTokenParams): Promise<AccessToken>;
export interface AcquireAccessTokenParams {
additionalScopesToConsent?: string[];
claimsForConditionalAccessPolicy?: string;
promptFullConsent?: boolean;
}
API 會傳回 AccessToken 物件,其中包含權杖本身和權杖的到期日。
若要在前端範例中呼叫 API,請建立範例項目,然後向下卷動並選取 [瀏覽至驗證] 頁面。 您可以從中選取 [取得存取權杖] 以接收回權杖。
同意
若要了解為何需要同意,請仔細檢查 Microsoft Entra ID 中的使用者與管理員同意。
注意
CRUD/工作需要同意才能運作,並取得租用戶之間的權杖。
同意如何在 Fabric 工作負載中運作?
若要授與特定應用程式的同意,Fabric FE 會建立設定有工作負載應用程式 ID 的 MSAL 執行個體,並要求所提供範圍的權杖 (additionalScopesToConsent - 請參閱 AcquireAccessTokenParams)。
當要求具有特定範圍的工作負載應用程式權杖時,Microsoft Entra ID 會在遺失時顯示快顯同意,然後將彈出視窗重新導向至應用程式中設定的重新導向 URI。
重新導向 URI 通常位於與要求權杖的頁面相同的網域中,因此,頁面可以存取快顯並將其關閉。
在我們的案例中,它不在相同的網域中,因為 Fabric 正在要求權杖,而工作負載的重新導向 URI 不在 Fabric 網域中。 因此,當同意對話方塊開啟時,必須在重新導向後手動關閉。 我們不會使用 redirectUri 中傳回的程式碼,因此,只會自動將其關閉 (Microsoft Entra ID 會將快顯重新導向至它只會關閉的重新導向 URI)。
您可以在 index.ts 檔案中看到重新導向 URI 的程式碼/設定。
以下是應用程式「我的工作負載應用程式」及其在進行驗證設定時所設定的相依性 (儲存體和 Power BI) 同意彈出視窗的範例:
在主租用戶中授與同意的另一種方式 (選用)
若要在應用程式的主租用戶中取得同意,您可以要求租用戶管理員使用以下格式的 URL 來授與整個租用戶的同意 (插入您自己的租用戶 ID 和用戶端識別碼):
https://login.microsoftonline.com/{tenantId}/adminconsent?client_id={clientId}
AcquireAccessTokenParams
呼叫 acquireAccessToken JS API 時,我們可以提供三個參數:
- additionalScopesToConsent:要求同意的其他範圍,例如重新同意案例。
- claimsForConditionalAccessPolicy:OBO 流程失敗時從 Microsoft Entra ID 傳回的宣告,例如 OBO 需要多重要素驗證。
- promptFullConsent:提示工作負載應用程式靜態相依性的完整同意視窗。
additionalScopesToConsent
如果工作負載前端要求令牌用於對工作負載後端的呼叫,此參數應該是 null。 工作負載後端無法在收到的令牌上執行 OBO,因為同意遺漏錯誤,在此情況下,工作負載後端必須將錯誤傳播至工作負載前端並提供此參數。
claimsForConditionalAccessPolicy
由於租用戶上已設定某些條件式存取原則,當工作負載 BE 面臨 OBO 失敗時,會使用此參數。
因條件式存取原則導致的 OBO 失敗傳回名為 "claims" 的字串。此字串應傳送至 FE 要求提供權杖的工作負載 FE,並將宣告作為 claimsForConditionalAccessPolicy 傳遞。 如需詳細資訊,請參閱處理多重要素驗證 (MFA)、條件式存取和累加式同意。
請參閱 BE 範例中的 AuthenticationService AddBearerClaimToResponse 使用方式,以查看 OBO 操作因同意遺失或條件式存取原則而失敗時的回應範例。
若要深入瞭解此額外的ScopesToConsent 和 claimsForConditionalAccessPolicy,並查看使用方式的範例,請參閱 工作負載驗證指導方針和深入探討。
promptFullConsent
當傳遞為 true 時,不論使用者先前是否提供同意,靜態相依性的完整同意都會彈出。 此參數的範例用法是將按鈕新增至 UX,讓使用者可以使用它來授與工作負載的完整同意。