【问题标题】:using Jwt-Dotnet to generate a valid token使用 Jwt-Dotnet 生成有效令牌
【发布时间】:2017-11-01 16:03:56
【问题描述】:

我正在使用以下代码,最初是从jwt-dotnet github page借来的

    private static string CreateToken(UserPrincipal principal)
    {
        /*
         * https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
         * http://self-issued.info/docs/draft-ietf-oauth-json-web-token.html
         */
        var key = ConfigurationManager.AppSettings["jwt-key"];

        var claims = new Dictionary<string, string>()
        {
            {ClaimTypes.Name, "Rainbow Dash" },
            {ClaimTypes.WindowsAccountName, "RDash"}
        };

        var algorithm = new HMACSHA256Algorithm();
        var serializer = new JsonNetSerializer();
        var urlEncoder = new JwtBase64UrlEncoder();
        var encoder = new JwtEncoder(algorithm, serializer, urlEncoder);
        var token = encoder.Encode(claims, key);
        return token;
    }

以上代码生成以下令牌:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiUmFpbmJvdyBEYXNoIiwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy93aW5kb3dzYWNjb3VudG5hbWUiOiJSRGFzaCJ9.5WZWDJ0pvTe6QLjVNUeTfZicX_wSsk1dtYvXUbpiOiw P>

所以,我跳到jwt.io 来测试我的令牌。我被告知我的签名无效。

如何给它一个有效的“签名”?我不明白我的 JWT 缺少什么。

【问题讨论】:

    标签: c# jwt


    【解决方案1】:

    如果您将创建令牌时使用的秘密签名密钥提供给它,则 JWT.io 上的工具可以验证您的令牌的数字签名:

    从您的代码中可以看出,您的代码中包含的值是:

    ConfigurationManager.AppSettings["jwt-key"];
    

    只需在“秘密”文本框中输入值,如果令牌的签名与 JWT.io 计算的签名匹配,则会收到一条消息,说明签名有效。

    【讨论】:

      猜你喜欢
      • 2017-11-24
      • 2023-01-27
      • 2020-05-08
      • 2018-02-01
      • 2018-08-29
      • 2021-07-29
      • 2017-04-06
      • 2020-09-28
      相关资源
      最近更新 更多