目前我有一个用于JWT令牌生成的硬编码密钥。生成令牌时随机生成此内容的最佳方法是什么?此外,我不明白的是,如果秘密是随机生成的,那么为了验证目的,如何再次随机生成秘密。我在这里错过了一些东西,还是我对这是如何工作的?看来秘密密钥甚至不是随机的。是否会存储在web.config中,例如
答案 0 :(得分:2)
只是扩展@nodd13的帖子我已经使用以下(在LinqPad中)随机生成一个键:
var key = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(key);
var base64Secret = Convert.ToBase64String(key);
// make safe for url
var urlEncoded = base64Secret.TrimEnd('=').Replace('+', '-').Replace('/', '_');
urlEncoded.Dump();
这确实是随机的,据我所知,你只需要这样做一次,然后你可以将它存储在你的web.config中以便稍后引用。
答案 1 :(得分:0)
我使用了此blog post
中的以下代码var key = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(key);
var base64Secret = TextEncodings.Base64Url.Encode(key);