在restful web api中验证后续请求的令牌签名

时间:2014-02-07 16:14:25

标签: security asp.net-web-api token jwt

当用户通过身份验证时,我将一个签名的令牌放在响应授权标头中。

只有有效的签名令牌才允许对资源网址进行每次访问。

当我创建令牌并对其进行验证时:

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;
    }
}

我把这段代码放在一个静态类中是否有什么不对,这实际上是我的全部目的,因为我希望用随机数填充字节数组只发生一次!?

我还能改进吗?

1 个答案:

答案 0 :(得分:0)

您无法将签名令牌设为静态。因为它将成为全局变量并由所有请求(线程)共享。此外,您将面临静态字段的并发问题。

如果您想使其特定于会话。那么你需要存储一个不在静态字段中的会话变量。