【问题标题】:Generate a secret key for JWT?为 JWT 生成密钥?
【发布时间】:2017-10-15 14:58:49
【问题描述】:

目前我有一个用于生成 JWT 令牌的硬编码密钥。生成令牌时随机生成它的最佳方法是什么?另外,我不明白的是,如果秘密是随机生成的,那么如何再次随机生成秘密以进行身份​​验证。我在这里遗漏了什么还是我对它的工作方式有疑问?看来密钥甚至不是随机的。例如,我会在 web.config 中存储它吗

【问题讨论】:

  • 你有解决办法吗?我也有同样的问题
  • @JayakrishnanGounder - 不是真的......我刚刚创建了一个静态的放在配置文件中

标签: c# .net asp.net-web-api2 jwt


【解决方案1】:

只是扩展@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 中以供以后引用。

【讨论】:

  • 存储在 web.config 中用于 web api 2 项目是否安全?
  • Base64 编码字符串末尾的等号不应该作为 base64 字符串预期填充的一部分,其中位分组需要它吗?
【解决方案2】:

我使用了blog post中的以下代码

var key = new byte[32];
RNGCryptoServiceProvider.Create().GetBytes(key);
var base64Secret = TextEncodings.Base64Url.Encode(key);

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2017-07-30
    • 2017-11-05
    • 2021-01-06
    • 2019-08-07
    • 2018-03-27
    • 2020-08-27
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多