当用户通过身份验证时,我将一个签名的令牌放在响应授权标头中。
只有有效的签名令牌才允许对资源网址进行每次访问。
当我创建令牌并对其进行验证时:
var principal = tokenHandler.ValidateToken(tokenString, validationParameters);
然后当签名密钥与
相同时,我得到委托人(提出请求的用户)用于创建令牌。
我可以在身份验证后和ressource请求期间使用相同的签名密钥来验证我创建此类的令牌:
public static class ApiConstants
{
private static readonly RNGCryptoServiceProvider CryptoProvider = new RNGCryptoServiceProvider(new byte[33]);
private static byte[] key = new byte[32];
static ApiConstants()
{
CryptoProvider.GetBytes(key);
}
public static byte[] GetSignedKey()
{
return key;
}
}
我把这段代码放在一个静态类中是否有什么不对,这实际上是我的全部目的,因为我希望用随机数填充字节数组只发生一次!?
我还能改进吗?
答案 0 :(得分:0)
您无法将签名令牌设为静态。因为它将成为全局变量并由所有请求(线程)共享。此外,您将面临静态字段的并发问题。
如果您想使其特定于会话。那么你需要存储一个不在静态字段中的会话变量。