0
Configuration:
    "@azure/msal-angular": "^1.1.2",
    "msal": "^1.4.4",
    "rxjs": "~6.4.0",
     Angular 8+


export const msalConfig: Configuration = {
  auth: {
    clientId: environment.msalModule.clientID,
    authority: environment.msalModule.authority,
    redirectUri: environment.msalModule.redirectUri,
    validateAuthority: true,
    postLogoutRedirectUri: environment.msalModule.redirectUri,
    navigateToLoginRequestUrl: true
  },
  cache:
  {
    cacheLocation: 'localStorage',
  }
}

export const angularConfig: MsalAngularConfiguration = {
  popUp: false,
  consentScopes: [
    'user.read',
    environment.msalModule.appScope
  ],
  protectedResourceMap: protectedResourceMap
}

我有具有上述配置的 Angular 应用程序。我正在使用 msal-angular 库中的 MsalInterceptor。在微软窗口登录后,我被重定向到我收到错误的应用程序:“令牌调用在隐藏的 iframe 中被阻止”,之后又出现“令牌更新因超时而失败”。问题在于acquireTokenSilent 方法失败。我看到更多的人有这个问题,这在这里描述:https ://github.com/AzureAD/microsoft-authentication-library-for-js/issues/1194 。即使用户在 localStorage 中有令牌,也存在此错误。我认为这可能只是警告,我可以捕获错误并充当已登录的用户,但没有,因为某些用户实际上没有令牌,然后是应用程序迷恋。有没有人遇到过类似的问题并处理过?

4

1 回答 1

0

当检测到您的应用程序在该 iframe 内的页面加载时调用acquireTokenSilent 时会发生错误,以防止由此产生的任何不良副作用(例如,无休止地尝试获取令牌)。此线程中列出的建议是,当 url 中有哈希并且您的应用位于 iframe 内时,不要在页面加载时调用 acquireTokenSilent。

于 2021-08-09T07:12:12.390 回答