首页 > 解决方案 > 使用 Microsoft.Identity 清除令牌缓存时将用户带到登录屏幕

问题描述

使用 Microsoft.Identity 对我们的 ASP.Net Core Web 应用程序中的用户进行身份验证。

在内部,身份平台连接到 Azure AD 以对用户进行身份验证,我们还使用 Microsoft.Graph 从 AD 获取用户数据。

目前我们正在使用AddInMemoryTokenCaches进行令牌缓存,并且正如预期的那样,当服务器重新启动时它会被清除。

使用 Graph 连接到 AD 需要一个令牌,并且在服务器重新启动时会因为缓存被清除而丢失。使用ITokenAcquisitionGetAccessTokenForUserAsync引发错误MsalUiRequiredException:没有帐户或登录提示已传递给 AcquireTokenSilent 调用。

这就是我配置身份和 MSGraph 的方式。

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(
                    options =>
                    {
                        Configuration.Bind("AzureAd", options);
                        options.Events = new OpenIdConnectEvents
                        {
                            OnTokenValidated = context => { return System.Threading.Tasks.Task.CompletedTask; }
                        };
                    }, options => { Configuration.Bind("AzureAd", options); })
                .EnableTokenAcquisitionToCallDownstreamApi(options => Configuration.Bind("AzureAd", options),
                    initialScopes)
                .AddMicrosoftGraph(Configuration.GetSection("GraphAPI"))
                .AddInMemoryTokenCaches();

清除令牌缓存后,有什么方法可以将用户重定向到登录页面?

标签: asp.net-coremicrosoft-graph-sdksmicrosoft-identity-web

解决方案


推荐阅读