UNPKG

@azure/msal-browser

Version:
86 lines (83 loc) 3.23 kB
/*! @azure/msal-browser v5.6.3 2026-04-01 */ 'use strict'; import { invoke } from '@azure/msal-common/browser'; import { SilentHandlerLoadFrameSync } from '../telemetry/BrowserPerformanceEvents.mjs'; import { createBrowserAuthError } from '../error/BrowserAuthError.mjs'; import { getEARForm, getCodeForm } from '../protocol/Authorize.mjs'; import { emptyNavigateUri } from '../error/BrowserAuthErrorCodes.mjs'; /* * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ /** * Creates a hidden iframe to given URL using user-requested scopes as an id. * @param urlNavigate * @param userRequestScopes */ async function initiateCodeRequest(requestUrl, performanceClient, logger, correlationId) { if (!requestUrl) { // Throw error if request URL is empty. logger.info("1l7hyp", correlationId); throw createBrowserAuthError(emptyNavigateUri); } return invoke(loadFrameSync, SilentHandlerLoadFrameSync, logger, performanceClient, correlationId)(requestUrl); } async function initiateCodeFlowWithPost(config, authority, request, logger, performanceClient) { const frame = createHiddenIframe(); if (!frame.contentDocument) { throw "No document associated with iframe!"; } const form = await getCodeForm(frame.contentDocument, config, authority, request, logger, performanceClient); form.submit(); return frame; } async function initiateEarRequest(config, authority, request, logger, performanceClient) { const frame = createHiddenIframe(); if (!frame.contentDocument) { throw "No document associated with iframe!"; } const form = await getEARForm(frame.contentDocument, config, authority, request, logger, performanceClient); form.submit(); return frame; } /** * @hidden * Loads the iframe synchronously when the navigateTimeFrame is set to `0` * @param urlNavigate * @param frameName * @param logger */ function loadFrameSync(urlNavigate) { const frameHandle = createHiddenIframe(); frameHandle.src = urlNavigate; return frameHandle; } /** * @hidden * Creates a new hidden iframe or gets an existing one for silent token renewal. * @ignore */ function createHiddenIframe() { const authFrame = document.createElement("iframe"); authFrame.className = "msalSilentIframe"; authFrame.style.visibility = "hidden"; authFrame.style.position = "absolute"; authFrame.style.width = authFrame.style.height = "0"; authFrame.style.border = "0"; authFrame.setAttribute("sandbox", "allow-scripts allow-same-origin allow-forms"); authFrame.setAttribute("allow", "local-network-access *"); document.body.appendChild(authFrame); return authFrame; } /** * @hidden * Removes a hidden iframe from `document.body` if it is a direct child. * @param iframe - The iframe element to remove. */ function removeHiddenIframe(iframe) { if (document.body === iframe.parentNode) { document.body.removeChild(iframe); } } export { initiateCodeFlowWithPost, initiateCodeRequest, initiateEarRequest, removeHiddenIframe }; //# sourceMappingURL=SilentHandler.mjs.map