使用Jwt-Dotnet生成有效令牌

时间:2017-05-31 18:00:06

标签: c# jwt

我使用的是以下代码,我最初是从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

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

如何为其提供有效的签名&#39;?我不明白我的JWT遗失了什么。

1 个答案:

答案 0 :(得分:1)

JWT.io上的工具可以验证令牌的数字签名,如果你给它创建一个令牌时使用的秘密签名密钥:

enter image description here

通过查看您的代码,它包含在您的代码中

ConfigurationManager.AppSettings["jwt-key"];

只需在&#34; secret&#34;中输入值即可。文本框,如果令牌的签名与JWT.io计算的签名匹配,那么您将收到一条消息,说明签名有效。