重新启动后找不到帐户:没有帐户或登录提示传递到 AcquireTokenSilent 调用

and*_*809 8 c#-3.0 bearer-token azure-ad-b2c asp.net-core azure-ad-msal

我有一个 Web 应用程序,必须向 API 发送 B2C Bearer 令牌才能获得授权。我通过使用 MSAL 实现了这一点,一切正常,直到我重新启动 Web 应用程序,一旦重新启动 Web 应用程序(不注销),应用程序似乎仍然可以找到 B2C 声明,并且用户仍然处于登录状态,但是IConfidentialClientApplication 无法使用 GetAccountAsync(),因为找不到帐户

我得到的错误是:{“没有帐户或登录提示传递给 AcquireTokenSilent 调用。”}

如果用户注销,问题即可解决。这种情况发生在本地主机上,如果应用程序是通过 Azure 发布的并且我重新启动应用程序服务,也会发生这种情况。

Jac*_*Jia 5

正如 juunas 在评论中解释的那样,MSAL默认情况下使用内存令牌缓存

客户端登录后,身份验证信息将存储在cookie中(如果cookie未禁用)。即使您的 Web 应用程序重新启动,客户端也将保持登录状态。

但是,由于使用了内存缓存,因此如果应用程序重新启动,所有缓存的项目都将被清除。为了解决此问题,您可以在 MSAL.NET 中自定义令牌缓存序列化