Как автоматически переопределить токен sh в ASP. NET Core 3.0 для запросов API? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть приложение ASP NET Core 3.0, и я использую Azure Active Directory для аутентификации. Ниже приведена конфигурация аутентификации

services.AddAuthentication(options =>
{
    options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
    options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
    options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
 })
.AddOpenIdConnect(options =>
{
    options.Authority = auth.Authority;
    options.ResponseType = OpenIdConnectResponseType.IdToken;
    options.SignedOutRedirectUri = auth.SignedOutRedirectUri;
    options.CallbackPath = auth.CallbackPath;
    options.ClientId = auth.ClientId;
})
.AddCookie(options =>
{
    options.AccessDeniedPath = "/Home/AccessDenied/";
    options.ExpireTimeSpan = TimeSpan.FromMinutes(20);
}); 

* * * * * * * * * * * * * * * * cookie автоматически обновляется, когда я меняю страницу после 20 минут бездействия, но этого не происходит, если я звоню на API Controller. Что я могу сделать, чтобы автоматически обновить sh токен, когда я выполняю вызов AJAX и токен истек? Я что-то добавил в конфигурацию?

1 Ответ

0 голосов
/ 07 февраля 2020

Этот более ранний пост может дать вам несколько идей - из предыдущего стека технологий MS, который следовал тем же понятиям.

Возможно, вам повезет с опцией SlidingExpiration. Традиционно это было проблемной областью c из-за 2 различных типов атрибута Authorize.

WIDER POINT

Более чистая архитектура, основанная на большинстве стандартов Решение с простейшим кодом и лучшим управлением пользовательским интерфейсом состоит в том, чтобы избежать смешивания кода Web и API в одном компоненте на стороне сервера.

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

  • ASP. Net Core Web API, который проверяет токены
  • веб-интерфейс без файлов cookie, реализованный в виде одностраничного приложения
  • веб-статистика c хостинг контента
  • пользовательский интерфейс отправляет токены в API
  • Пользовательский интерфейс молча обновляет токены, не задействуя серверную часть

Если интересно, посмотрите на мой Azure образец AD:

...