首页 > 解决方案 > 有没有办法提高 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>
      }
    })

标签: javascriptazure-web-app-servicemsal.js

解决方案


您可以使用ROPC 流程登录您的 MS 帐户。

使用ROPC,可以发送http请求来获取access_tokenid_token

不过微软不推荐这种方式,其他认证方式都会有弹窗。

在此处输入图像描述

Http请求

在此处输入图像描述

回复

在此处输入图像描述


推荐阅读