在静态字段中保存KeyForHmacSha256
,TokenIssuer
,TokenAudience
和TokenLifetimeMinutes
是最佳做法,或从配置文件中读取这些值。
public class SecurityConstants
{
public static readonly byte[] KeyForHmacSha256 = new byte[64];
public static readonly string TokenIssuer = string.Empty;
public static readonly string TokenAudience = string.Empty;
public static readonly double TokenLifetimeMinutes = 1;
static SecurityConstants()
{
RNGCryptoServiceProvider cryptoProvider = new RNGCryptoServiceProvider();
cryptoProvider.GetNonZeroBytes(KeyForHmacSha256);
TokenIssuer = "issuer";
TokenAudience = "http://localhost:90";
}
}
答案 0 :(得分:0)
与任何事情一样,答案是“这取决于。”
我肯定会认为KeyForHmacSha256
变量是从配置文件或环境变量中提取的,只是为了让它不受源代码控制。
就个人而言,我通常会动态地吸引发行人和受众。发布者是从环境中撤出的,因此我不必在每个部署中手动设置它,并且受众是由谁请求令牌决定的。
令牌生命周期最适合作为静态定义。如果您需要将其设置为动态,则需要对其进行处理,但明确设置它不是安全问题。