本文概述不同类型的错误,并提供处理常见登录错误的相关建议。
MSAL 错误处理基础知识
Microsoft 身份验证库 (MSAL) 中的异常旨在帮助应用开发者进行故障排除,而不会向最终用户显示。 异常消息未经本地化。
处理异常和错误时,可以使用异常类型本身和错误代码来区分不同的异常。 有关错误代码的列表,请参阅 Microsoft Entra 身份验证和授权错误代码。
在登录体验期间,可能会遇到有关许可、条件访问(MFA、设备管理、基于位置的限制)、令牌颁发和兑换以及用户属性的错误。
以下部分提供了有关应用错误处理的更多详细信息。
在 MSAL.js 中配置日志记录
可以在 MSAL.js (JavaScript) 中启用日志记录,方法是在配置过程中传递一个 loggerOptions 对象,以便创建 PublicClientApplication 实例。 唯一必需的配置参数是应用程序的客户端 ID。 其余内容都是可选的,但可能会根据你的租户和应用程序模型而需要。
loggerOptions 对象具有以下属性:
-
loggerCallback:开发人员可以提供的回调函数,以自定义方式处理 MSAL 语句的日志记录。 根据您想要重定向日志的方式,实现loggerCallback函数。 loggerCallback 函数具有以下格式(level: LogLevel, message: string, containsPii: boolean): void- 支持的日志级别包括:
Error、Warning、Info和Verbose。 默认值为Info。
- 支持的日志级别包括:
-
piiLoggingEnabled(可选):如果设置为 true,则记录个人和组织数据。 默认情况下,此项默认为 false,这样你的应用程序就不会记录个人数据。 个人数据日志永远不会写入到控制台、Logcat 或 NSLog 等默认输出。
import msal from "@azure/msal-browser"
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",
storeAuthStateInCookie: false,
secureCookies: false
},
system: {
loggerOptions: {
logLevel: msal.LogLevel.Verbose,
loggerCallback: (level, message, containsPii) => {
if (containsPii) {
return;
}
switch (level) {
case msal.LogLevel.Error:
console.error(message);
return;
case msal.LogLevel.Info:
console.info(message);
return;
case msal.LogLevel.Verbose:
console.debug(message);
return;
case msal.LogLevel.Warning:
console.warn(message);
return;
}
},
piiLoggingEnabled: false
},
},
};
后续步骤
有关更多代码示例,请参阅Microsoft 标识平台代码示例。