ClientAuthError:令牌续订操作由于超时而失败 MSAL Angular

San*_*mas 7 jwt azure-active-directory azure-ad-msal angular

我是 MSAL 新人。因此,我只遵循从此处实现它的基本设置https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/README.md

\n

我所做的是像这样在 app.module 中设置配置

\n

\r\n
\r\n
    MsalModule.forRoot({\n      auth: {\n        clientId: \'myclientid\', // This is your client ID\n        authority: \'https://login.microsoftonline.com/mytenantid\', // This is your tenant ID\n        redirectUri: \'http://localhost:4200\'// This is your redirect URI\n       \n      },\n      cache: {\n        cacheLocation: \'sessionStorage\',\n        storeAuthStateInCookie: isIE, // Set to true for Internet Explorer 11\n      },\n    }, {\n      popUp: !isIE,\n      consentScopes:\xc2\xa0[\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\'user.read\',\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\'openid\',\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\'apiappid/user_impersonation\',\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0], \n      unprotectedResources: [],\n      protectedResourceMap:\xc2\xa0[\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0[\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\'https://localhost:44331/\',\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0[\'apiappid/user_impersonation\'],\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0]\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\n        \xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0], \n      extraQueryParameters: {}\n    })
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

并在路由文件中添加了此内容

\n
 {path : \'das\',canActivate: [MsalGuard], component:CrMainComponent},\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的 app.component.ts

\n

\r\n
\r\n
 {path : \'das\',canActivate: [MsalGuard], component:CrMainComponent},\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n

所以我想,既然我在路由配置中指定了 Msalguard,它就会重定向到 Microsoft 的 Azure AD 身份验证,并且在身份验证成功后,它会将我重定向回我的页面。这一切都工作正常。

\n

但有时我会收到错误

\n
Uncaught (in promise): ClientAuthError: Token renewal operation failed due to timeout.\n
Run Code Online (Sandbox Code Playgroud)\n

老实说,我不知道我错过了什么或我做错了什么。在我的任何代码中,我都没有对登录过程执行任何操作。当我准备好这些代码时,这一切都会自动发生。那么我们真的要采取措施来解决这个令牌更新问题吗?我的意思是我们需要手动更新令牌吗?如果是的话怎么办??

\n

小智 0

对于超时错误,请使用同一组范围调用 acquireTokenPopup,然后再次发出请求。你可以参考这个

这是更新问题的一个已知问题。您可以在此处跟踪问题。

如果您想将 MSAL 用于 Angular,请参阅此示例