簡體   English   中英

Jwt-Dotnet沒有生成有效的令牌

[英]Jwt-Dotnet is not generating a valid token

我正在嘗試使用C#生成有效的JWT令牌,我的代碼是

        string secret = "6ASu2c8V/zF..........******"; // base64encoded
        var payload = new Dictionary<string, string>
        {
            {"iss", "http://webapi.one*******"},
            {"exp", "1498140965"},
            {"aud", "ONE****"},
            {"playauth", "Ygo2s********"}
        };

        IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
        IJsonSerializer serializer = new JsonNetSerializer();
        IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
        IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

        var token = encoder.Encode(payload,secret);
        return token;

當我運行代碼時,它會生成令牌

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vd2ViYXBpLm9uZXJlZWwubmV0IiwiZXhwIjoxNDk4MTQwOTY1LCJhdWQiOiJPTkVSRUVMIiwicGxheWF1dGgiOiJZZ28yc2Nob29sQG5pdGU5JCJ9.MuWc9tebE8IZFOIFsh2E_JP-UFQl4UZ9kTBG19_REnM

但是此令牌在https://jwt.io/上顯示無效簽名,並且我在驗證簽名上使用了正確的密鑰

我終於解決了。 我將我的based64編碼令牌轉換為字節數組,並且運行良好。 這是新的代碼:

        byte[] secret = Convert.FromBase64String("6ASu2c8V/zF*******");

        var payload = new Dictionary<string, object>
        {
            {"iss", "http****"},
            {"aud", "O***"},
            {"exp", expiryDate},
            {"nbf", createdDate}
        };

        IJwtAlgorithm algorithm = new HMACSHA256Algorithm();
        IJsonSerializer serializer = new JsonNetSerializer();
        IBase64UrlEncoder urlEncoder = new JwtBase64UrlEncoder();
        IJwtEncoder encoder = new JwtEncoder(algorithm, serializer, urlEncoder);

        var token = encoder.Encode(payload, secret);
        return token;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM