Ошибка Blazor MSAL AADSTS50058. Был отправлен запрос на автоматический вход, но ни один пользователь не вошел в систему

#blazor #msal #blazor-client-side

#blazor #msal #blazor-на стороне клиента

Вопрос:

У меня есть приложение 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

Майкрософт.AspNetCore.Компоненты.WebAssembly.Рендеринг.WebAssemblyRenderer[100] Компонент рендеринга необработанного исключения: login_required: AADSTS50058: был отправлен запрос на автоматический вход, но ни один пользователь не вошел в систему.

Раньше все работало, поэтому я подозреваю, что срок действия моего токена истек, и его необходимо обновить. Я не уверен, где я могу это обнаружить. Могу ли я где-нибудь перехватить это исключение, а затем перенаправить пользователя обратно на страницу входа?

Все работает, если я не указываю местоположение кэша, но я не хочу использовать кэш сеанса для этого приложения.

Ответ №1:

Вы пробовали использовать шаблоны BlazorWasm? Это должно помочь вам начать. Информация о веб-приложениях. Информация об обработке условного доступа.