如何解决Blazor MSAL错误AADSTS50058发送了无提示登录请求,但没有用户登录
我有一个Blazor WASM应用程序,该应用程序配置为使用MSAL身份验证。
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd",options.ProviderOptions.Authentication);
options.ProviderOptions.LoginMode = "redirect";
options.ProviderOptions.DefaultAccessTokenScopes.Add("openid");
options.ProviderOptions.DefaultAccessTokenScopes.Add("profile");
options.ProviderOptions.DefaultAccessTokenScopes.Add("{{ MY SCOPE }}");
options.ProviderOptions.Cache.CacheLocation = "localStorage";
});
然后我可以注入一个ITokenProvider
以获得一个访问令牌,该令牌可以附加到我的HttpCLient
请求中。
var tokenGetter = await tokenProvider.RequestAccessToken();
if (tokenGetter.TryGetToken(out var token))
{
if (!String.IsNullOrWhiteSpace(token.Value))
{
//Token available here
}
}
问题是,当我导航到受限制的[Authorize]
页时,出现以下错误。
无法加载资源:服务器响应状态为400 (错误请求)login.microsoftonline.oauth2 / v2.0 / token
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer [100] 未处理的异常呈现组件:login_required:AADSTS50058: 发送了无提示登录请求,但没有用户登录。
之前一切正常,因此我怀疑我的令牌已过期,需要刷新。我不确定在哪里可以检测到这一点。有什么地方可以捕捉到此异常,然后将用户重定向回登录页面?
如果我没有指定缓存位置,但是我不想为此应用程序使用会话缓存,一切都会正常。
解决方法
您是否尝试过使用BlazorWasm templates?那应该可以帮助您入门。 web apps上的信息。 有关handling conditional access的信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。