JWT令牌存储

时间:2019-05-16 20:33:31

标签: security .net-core jwt

我已经遍历了一些.NET Core2服务,并向其中添加了一些JWT身份验证以提供一些基本的安全性。

我创建了一个新的ProvisioningService,它的端点构建令牌并返回令牌:

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken(_config["Jwt:Issuer"],
        _config["Jwt:Issuer"],
        claims,
        expires: DateTime.Now.AddMinutes(30),
        signingCredentials: creds);

return new JwtSecurityTokenHandler().WriteToken(token);

我通过在TestService中添加AddAuthentication来更改了一项现有服务(我将其称为StartUp)。此呼叫的端点具有[HttpPost(), Authorize]属性。我将这些更改部署到了我的测试服务器。

当我致电TestService/api/updateSomething时,我将按预期返回401 Unauthorized。在我的本地计算机上,我通过ProvisioningService/api/buildToken创建了一个新令牌,并通过授权标头将响应中的令牌添加到了我的TestService调用中。令我惊讶的是...

为什么我的TestService(在完全不同的服务器上)将在本地计算机上创建的令牌视为有效令牌,并允许该呼叫正常工作?我期望它返回相同的401,因为我认为此令牌在测试服务器上将是无效的。我对JWT的经验不足可能表明...。但是我不了解如何在服务器之间存储/共享这些令牌。

1 个答案:

答案 0 :(得分:0)

我无法理解令牌本身具有解密后需要授权的内容。不再需要这个问题。