asp.net-core - 使用 Microsoft.Identity 清除令牌缓存时将用户带到登录屏幕
问题描述
使用 Microsoft.Identity 对我们的 ASP.Net Core Web 应用程序中的用户进行身份验证。
在内部,身份平台连接到 Azure AD 以对用户进行身份验证,我们还使用 Microsoft.Graph 从 AD 获取用户数据。
目前我们正在使用AddInMemoryTokenCaches进行令牌缓存,并且正如预期的那样,当服务器重新启动时它会被清除。
使用 Graph 连接到 AD 需要一个令牌,并且在服务器重新启动时会因为缓存被清除而丢失。使用ITokenAcquisition的GetAccessTokenForUserAsync引发错误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();
清除令牌缓存后,有什么方法可以将用户重定向到登录页面?
解决方案
推荐阅读
- detox - Android 上的 sendUserNotification 问题(“未找到处理 Intent 的活动”)
- node.js - 无法在 Lambda node.js 函数中解析来自 SQS 的 JSON 响应
- sql - 使用 Group by 进行多次聚合计算
- r - 使用 dplyr 高效汇总具有不同功能的不同列
- javascript - Adobe 表单字段的 Javascript 验证 - 电子邮件抄送(多个电子邮件输入)
- node.js - 在 express 中设置默认查询
- github - 如何在 Markdown 文件的代码部分中插入 GitHub 表情符号?
- python - 如何绘制 200 个周期,每个周期在 matplotlib 中有 200 个值的列表
- python - Selenium 不使用默认 Chrome 配置文件
- javascript - 无法解析模块说明符“babel-runtime/regenerator”