如何在ASP.NET Core MVC应用中自动刷新访问令牌

时间:2019-04-26 16:04:33

标签: c# .net asp.net-mvc jwt asp.net-core-2.0

我有一个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);

也许这不是验证我的客户端的最佳方法,但是到目前为止,它仍然有效。

我需要将后端和客户端分开,因为移动客户端也使用相同的后端。

谢谢。

0 个答案:

没有答案