Blazor身份验证-刷新JWT令牌的令牌

时间:2020-03-26 13:45:07

标签: c# authentication web jwt blazor-client-side

我的身份验证基于此git hub存储库。

https://github.com/chrissainty/AuthenticationWithClientSideBlazor

我只是想知道是否有人对如何实施刷新令牌提出任何建议,因为目前我尝试过的所有操作都失败了。

Blazor何时重新检查身份验证,因为我收集的所有内容都是对负载进行检查,所以当我的令牌仍在登录时过期时,我会收到未经授权的http错误。我不想注销用户以进行重新认证。

这是针对Blazor Web Assembly应用程序。

任何建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

总体思路是:

服务器:

  1. 在登录期间生成刷新令牌 您可以选择所需的任何方法。为简单起见,只需生成随机字符集即可,例如:
private string GenerateRefreshToken()
{
    Random random = new Random();
    byte[] baseBytes = new byte[128];
    random.NextBytes(baseBytes);
    return Convert.ToBase64String(baseBytes);
}
  1. 将其与到期日期(如2周)存储在一起,并转给用户
  2. 展开LoginController。登录以返回两个令牌而不是一个令牌
  3. 将新端点添加到LoginController(或扩展现有端点)-LoginUsingRefreshToken

您在这里使用刷新令牌再次登录用户。因为您存储了刷新令牌,所以您确切知道哪个用户要再次登录。延长(或不选择您的方法)此特定刷新令牌的到期日期。


客户:

  1. 像存储“常规”令牌一样存储刷新令牌
 await _localStorage.SetItemAsync("refreshToken", loginResult.RefreshToken);
  1. 检查常规令牌是否已过期。您可以通过多种方式做到这一点:

    在每个请求之前反序列化令牌并检查到期日期 动态行动:从服务器收到401时 将计时器设置为在令牌到期之前重新登录 或者选择其他东西

  2. 使用刷新令牌和新创建的端点重新登录