Как автоматически обновить токен доступа в приложении ASP.NET Core MVC - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть бэкэнд Web API, который имеет конечную точку аутентификации для получения токена доступа и обновления. Мой клиент уже извлекает токен доступа и создает новый идентификатор для входа в систему, используя HttpContext.

Но как автоматически получить новый токен доступа с помощью токена обновления в моем клиенте ASP.NET MVC.

У меня уже есть весь бэкэнд, работающий для этой части.

Я попытался добавить схему аутентификации Bearer к услугам моего клиента. Сейчас я использую схему аутентификации Cookie.

Добавление аутентификации в сервис:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
    .AddCookie(options => { options.LoginPath = "/Home/Index"; });

А вот как я могу войти в систему:

var token = JsonConvert.DeserializeObject<Token>(result);

AuthenticationProperties options = new AuthenticationProperties()
            {
                AllowRefresh = true,
                IsPersistent = true,
                ExpiresUtc = DateTimeOffset.FromUnixTimeMilliseconds(token.Expiry),
            };

// TODO: new claim for the user name
var claims = new[]
            {
                new Claim(ClaimTypes.Name, dto.Email),
                new Claim(ClaimTypes.Role, dto.Role),  
                new Claim("AccessToken", $"Bearer {token.AccessToken}"),
            };

var identity = new ClaimsIdentity(claims, "ApplicationCookie");
var principal = new ClaimsPrincipal(identity);

HttpContext.SignInAsync(principal, options);

Возможно, это не лучший способ аутентификации моего клиента, но пока это работает.

Мне нужно, чтобы сервер и клиент были отделены друг от друга, потому что мобильный клиент также использует тот же сервер.

Заранее спасибо.

...