javascript - 有没有办法提高 MSAL 浏览器 js 登录的性能?
问题描述
我在 Azure 上作为应用服务托管了一个单页 JavaScript (TypeScript) 应用程序,并且我正在使用带有 @msal-browser npm 包的 Azure AAD 的隐式流 MSAL 身份验证来对我的用户进行身份验证。我已将我的 MSAL 实例配置为使用登录重定向。登录有效,但响应速度很慢:我的应用需要超过 7 秒才能收到响应。我已将我的 MSAL 配置作为代码片段包含在下面。
在重定向发生之前,handleRedirectPromise 承诺会以空响应多次触发。用户登录后,他们会立即被重定向到我的应用程序中的正确 URL,但承诺需要很长时间才能解决。我的用户感到沮丧,因为他们认为什么都没有发生。
有没有办法在不涉及使用弹出窗口的情况下提高登录性能?我尝试使用弹出版本的 MSAL,但它同样慢。我希望我的登录是无缝的。转到站点,立即重定向到 MS 登录,重定向回我的站点,立即收到登录成功,最后在成功验证时加载应用程序。
const cacheLocation: 'localStorage' = 'localStorage';
const msalConfig: Msal.Configuration = {
auth: {
clientId: environment.clientId,
authority: `https://login.microsoftonline.com/${environment.tenant}/`,
knownAuthorities: [`https://login.microsoftonline.com/${environment.tenant}/`],
//validateAuthority: true,
redirectUri: environment.redirectUri,
navigateToLoginRequestUrl: false,
postLogoutRedirectUri: environment.postLogoutRedirectUri
},
cache: {
cacheLocation,
storeAuthStateInCookie: false
},
system: {
loggerOptions: {
loggerCallback: (level: Msal.LogLevel, message: string, containsPii: boolean): void => {
console.log(message)
},
piiLoggingEnabled: true,
logLevel: Msal.LogLevel.Verbose
}
}
};
this.msalInstance = new Msal.PublicClientApplication(msalConfig);
this.msalInstance
.handleRedirectPromise()
.then((tokenResponse) => { console.log('log in callback')
if (tokenResponse !== null) {
<DO THINGS HERE>
}
})
解决方案
您可以使用ROPC 流程登录您的 MS 帐户。
使用ROPC
,可以发送http请求来获取access_token
和id_token
。
不过微软不推荐这种方式,其他认证方式都会有弹窗。
Http请求
回复
推荐阅读
- javascript - 使用 Chrome 无头和 Karma 的 Angular 单元测试挂起
- c# - 如何在 Visual Studio 编辑器中的特定行/列/长度上创建标签?
- r - 使用 R flextable 包时出错 - 无法加载临时图像文件
- stackdriver - 我想为我的 API 创建正常运行时间检查,它是 VPC 网络下的内部 TCP 负载均衡器?
- python - Python - while true 循环中三个值的平均值
- c - 未定义对 ftdi_init 的引用
- r - 计算R中数据框值之间的直接依赖关系
- django - 在下拉列表中返回 first_name 和 last_name
- javascript - 错误类型错误:fs.createWriteStream 不是一个函数 Angular 6 GIF 导出
- autodesk-forge - 如何提高本地环境中的 Forge Viewer 性能