身份验证配置选项

在开始之前,请确保了解如何 初始化应用对象

MSAL 库具有一组配置选项,可用于自定义身份验证流的行为。 可以在对象的构造函数 PublicClientApplication 中或作为 请求 API 的一部分设置这些选项。 下面介绍可传递到构造函数的配置 PublicClientApplication 对象。

使用配置对象

配置对象具有以下结构,可以传递到 PublicClientApplication 构造函数中。 唯一必需的配置参数是应用程序的客户端 ID。 其余内容都是可选的,但可能会根据你的租户和应用程序模型而需要。

const msalConfig = {
    auth: {
        clientId: "enter_client_id_here",
        authority: "https://login.microsoftonline.com/common",
        knownAuthorities: [],
        cloudDiscoveryMetadata: "",
        redirectUri: "enter_redirect_uri_here",
        postLogoutRedirectUri: "enter_postlogout_uri_here",
        navigateToLoginRequestUrl: true,
        clientCapabilities: ["CP1"],
    },
    cache: {
        cacheLocation: "sessionStorage",
    },
    system: {
        loggerOptions: {
            loggerCallback: (
                level: LogLevel,
                message: string,
                containsPii: boolean
            ): void => {
                if (containsPii) {
                    return;
                }
                switch (level) {
                    case LogLevel.Error:
                        console.error(message);
                        return;
                    case LogLevel.Info:
                        console.info(message);
                        return;
                    case LogLevel.Verbose:
                        console.debug(message);
                        return;
                    case LogLevel.Warning:
                        console.warn(message);
                        return;
                }
            },
            piiLoggingEnabled: false,
        },
        windowHashTimeout: 60000,
        iframeHashTimeout: 6000,
        loadFrameTimeout: 0,
        protocolMode: "AAD"
    },
    telemetry: {
        application: {
            appName: "My Application",
            appVersion: "1.0.0",
        },
    },
};

const msalInstance = new PublicClientApplication(msalConfig);

配置选项

身份验证配置选项

选项 Description Format 默认值
clientId 应用程序的应用 ID。 可以在Azure 门户应用注册窗格中找到 UUID/GUID None. 若要使 MSAL 执行任何操作,此参数是必需的。
authority 要进行身份验证和授权的租户的 URI。 通常采用以下形式: https://{uri}/{tenantid} 包含租户的 URI 格式的字符串 - https://{uri}/{tenantid} https://login.microsoftonline.com/common
knownAuthorities 已知有效 URI 的数组。 在 B2C 方案中使用。 URI 格式的字符串数组 空数组 []
cloudDiscoveryMetadata 包含云发现响应的字符串。 在Microsoft Entra方案中使用。 字符串 空字符串 ""
authorityMetadata 包含 .known/openid-configuration 终结点响应的字符串。 字符串 空字符串 ""
redirectUri 发送回授权代码响应的 URI。 此处指定的任何位置都必须具有可用于处理响应的 MSAL 库。 采用绝对或相对 URI 格式的字符串 登录请求页(window.location.href 发出身份验证请求的页面)
postLogoutRedirectUri 发出注销后重定向到的 URI。 绝对或相对 URI 格式的字符串。 传递 null 以禁用注销后重定向。 登录请求页(window.location.href 发出身份验证请求的页面)
navigateToLoginRequestUrl 如果 true,在处理授权代码响应之前,将导航回原始请求位置。 如果与 redirectUri 原始请求位置相同,则应将此标志设置为 false。 布尔 true
clientCapabilities 要作为声明请求的 xms_cc 一部分添加到所有网络请求的功能数组 字符串数组 []
azureCloudOptions 一组定义的 Azure 云选项,供开发人员默认为其特定的云颁发机构。 AzureCloudOptions AzureCloudInstance.None
skipAuthorityMetadataCache 一个标志,用于选择是否在颁发机构初始化期间使用本地元数据缓存。 如果未提供颁发机构元数据,并在进行元数据的网络调用之前,则使用元数据缓存。 布尔 false
onRedirectNavigate 传递 URL MSAL 的回调将在重定向流中导航到。 在 false 回调中返回将停止导航。 功能- (url: string) => boolean \| void undefined
instanceAware 一个标志,指示 STS 是否应发送回其他参数,以指定应从何处检索令牌。 布尔 false
isMcp 如果是 true,则所有令牌请求都需要一个 resource 参数。 用于模型上下文协议(MCP)流。 布尔 false

缓存配置选项

选项 Description Format 默认值
cacheLocation 浏览器中令牌缓存的位置。 字符串值必须是下列值之一: "sessionStorage""localStorage""memoryStorage" sessionStorage
temporaryCacheLocation 已弃用)浏览器中临时缓存的位置。 仅应针对特定边缘情况更改此选项。 有关详细信息,请参阅 缓存 字符串值必须是下列值之一: "sessionStorage""localStorage""memoryStorage" sessionStorage
storeAuthStateInCookie 已弃用)如果为 true,请将缓存项存储在 Cookie 和浏览器缓存中。 以前用于Internet Explorer兼容性。 布尔 false
secureCookies 已弃用)如果为 true 且 storeAuthStateInCookie 也已启用,则 MSAL 会将 Secure 标志添加到浏览器 Cookie 中,以便只能通过 HTTPS 发送它。 布尔 false
cacheMigrationEnabled 如果为 true,则较旧版本的 MSAL 中的缓存条目将更新为符合启动时的最新缓存架构。 如果应用程序最近尚未更新到新版本的 MSAL.js,则可以安全地关闭此版本。 如果未迁移旧的缓存条目,则尝试检索帐户或令牌时,可能会导致缓存丢失,受影响的用户可能需要重新进行身份验证才能获取最新状态。 布尔 true 使用 localStorage时, false 否则
claimsBasedCachingEnabled 如果 true访问令牌缓存在包含所请求声明字符串哈希的密钥下,则当使用相同的令牌请求或缺少声明时,会导致缓存未命中和新网络令牌请求。 如果设置为 false令牌,则缓存令牌时没有声明,但包含声明的所有请求将转到网络,并覆盖具有相同作用域的任何以前缓存的令牌。 布尔 false

注释

此选项 temporaryCacheLocation 已在最新版本的 MSAL Browser 中弃用,可能会在将来的主版本中删除。 对于新实现,不应依赖此选项。

注释

MSAL Browser 的最新版本中已弃用这些 storeAuthStateInCookie 选项 secureCookies 。 这些选项主要用于Internet Explorer兼容性,不再受支持。 将来的主要版本中可能会删除它们。

有关详细信息 ,请参阅 MSAL 中的缓存

系统配置选项

选项 Description Format 默认值
loggerOptions 记录器的配置对象。 请参阅 下文 请参阅 下文
windowHashTimeout 等待弹出操作解析的超时(以毫秒为单位)。 integer (毫秒) 60000
iframeHashTimeout 等待 iframe 操作解析的超时(以毫秒为单位)。 integer (毫秒) 6000
loadFrameTimeout 等待 iframe/popup 操作解析的超时(以毫秒为单位)。 如果提供,将为和iframeHashTimeout设置默认值windowHashTimeout integer (毫秒) undefined
navigateFrameWait 延迟(以毫秒为单位),等待 iframe 在窗口中加载。 integer (毫秒) 在 IE 或 Edge 中: 500在所有其他浏览器中: 0
asyncPopups 已弃用 - 改用 navigatePopups 。设置是否以异步方式打开弹出窗口。 设置为 “ false设置为”时,将在发生任何其他操作之前打开空白弹出窗口。 设置为 “ true设置为”时,在发出网络请求时会打开弹出窗口。 布尔 false
navigatePopups 设置是否打开弹出窗口并导航到以后。 设置为 true空弹出窗口时,将打开空白弹出窗口,然后导航到登录域。 设置为 false“设置为”时,弹出窗口将直接打开到登录域。 对于不支持的方案about:blank(例如桌面应用或渐进式 Web 应用),可将其设置为false此选项。 布尔 true
allowRedirectInIframe 默认情况下,MSAL 不允许在应用程序位于 iframe 内时启动重定向操作。 将此标志设置为 true 删除此检查。 布尔 false
cryptoOptions 在浏览器中配置加密操作的对象。 请参阅 Crypto 配置选项 请参阅 Crypto 配置选项
pollIntervalMilliseconds 身份验证期间弹出窗口 URL 哈希轮询之间的时间间隔(以毫秒为单位)。 integer (毫秒) 30
protocolMode 表示要使用的协议模式的枚举。 如果 "AAD"为符合 OIDC 的 AAD v2 终结点上的 MSAL 函数;如果是 "OIDC",则它在其他符合 OIDC 的终结点上运行。 字符串 "AAD"

记录器配置选项

选项 Description Format 默认值
loggerCallback 处理 MSAL 语句日志记录的回调函数。 功能- loggerCallback: (level: LogLevel, message: string, containsPii: boolean): void 请参阅 上面
piiLoggingEnabled 如果为 true,则日志中包含个人身份信息(PII)。 布尔 false

Crypto 配置选项

选项 Description Format 默认值
useMsrCrypto 是否在浏览器中可用(以及其他加密接口不可用)中使用 MSR Crypto 布尔 false
entropy 用于种子 MSR Crypto(例如 crypto.randomBytes(48) 来自 Node)的加密强随机值。 建议使用 48 位的 entropy。 如果 useMsrCrypto 已启用,则为必需。 Uint8Array undefined

遥测配置选项

选项 Description Format 默认值
application 使用 MSAL.js 的应用程序的遥测选项 请参阅 下文 请参阅 下文
client 遥测性能客户端实例 IPerformanceClient StubPerformanceClient

应用程序遥测

选项 Description Format 默认值
appName 应用程序的唯一字符串名称 字符串 空字符串“”
appVersion 使用 MSAL 的应用程序版本 字符串 空字符串“”