在开始之前,请确保了解如何 初始化应用对象。
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 的应用程序版本 | 字符串 | 空字符串“” |