1

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

只能使用有效的签名令牌允许对资源 url 的每次进一步访问。

当我创建令牌并验证它时:

var principal = tokenHandler.ValidateToken(tokenString, validationParameters);

然后当签名密钥相同时,我得到委托人(提出请求的用户)

通过创建令牌使用。

我可以在身份验证后和资源请求期间使用相同的签名密钥来验证我创建的这个类的令牌:

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

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

还有什么我可以改进的吗?

4

1 回答 1

0

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

如果你想让它特定于会话。那么您需要存储在会话变量中而不是静态字段中。

于 2014-02-07T18:15:55.680 回答