У меня есть бэкэнд 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);
Возможно, это не лучший способ аутентификации моего клиента, но пока это работает.
Мне нужно, чтобы сервер и клиент были отделены друг от друга, потому что мобильный клиент также использует тот же сервер.
Заранее спасибо.