相关疑难解决方法(0)

无法使用.net验证JSON Web令牌 - 密钥短

我用JSONWebTokennpm模块生成了一个jot:

var jwt = require('jsonwebtoken');

var payload = {
    "iss": "https://secure.example.com/",
    "exp": 1410819380,
    "http://example.com/orgnum": "987987987",
    "http://example.com/user": "me@example.com"
};

var token = jwt.sign(payload, 'secret');

console.log(token);
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlY3VyZS5leGFtcGxlLmNvbS8iLCJleHAiOjE0MTA4MTkzODAsImh0dHA6Ly9leGFtcGxlLmNvbS9vcmdudW0iOiI5ODc5ODc5ODciLCJodHRwOi8vZXhhbXBsZS5jb20vdXNlciI6Im1lQGV4YW1wbGUuY29tIiwiaWF0IjoxNDA4Mzk0Mjk2fQ.5X5LTg4wxDF2p49xtsRcG4S9Yk4qSfW1tMEU0AquBhc

由于我没有指定我想要的算法,因此它使用SHA256.

现在,我尝试在c#中验证这一点.这并不容易......

我得到一个关于密钥大小的例外:

IDX10603:'System.IdentityModel.Tokens.InMemorySymmetricSecurityKey'不能小于:'128'位.Parameternavn:key.KeySize实际大小为48.

II尝试扩展密钥,在创建对称密钥时出现新错误:

Base-64 char数组或字符串的长度无效

我认为这与我告诉.net代码关于我的密钥的方式有关.由于SymmetricKeyIssuerSecurityTokenProvider构造函数参数已命名base64Key,我尝试对我的密钥进行Base64Url编码:

        var secret =  Base64UrlEncoder.Encode("secret");
        TokenValidationParameters validationParameters = new TokenValidationParameters
        {                
            ValidateIssuer = false,
            ValidateAudience = false,
            IssuerSigningTokens = new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret).SecurityTokens
        };
Run Code Online (Sandbox Code Playgroud)

那么,我在这里缺少什么?
为什么jsonwebtoken.net不能用短键生成和验证jots?
为什么.net不能接受我给它的钥匙?

这是完整的.net代码,带有用长键签名的jot:

        var jwtToken =
            "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3NlY3VyZS5leGFtcGxlLmNvbS8iLCJleHAiOjE0MTA4MTkzODAsImh0dHA6Ly9leGFtcGxlLmNvbS9vcmdudW0iOiI5ODc5ODc5ODciLCJodHRwOi8vZXhhbXBsZS5jb20vdXNlciI6Im1lQGV4YW1wbGUuY29tIiwiaWF0IjoxNDA4Mzk1NjY4fQ.ZceiiEO_Mn5_GZp5D_r68VTT33fbocn1BTTznD6u3cs";
        var secret = Base64UrlEncoder.Encode("super duper secret with some …
Run Code Online (Sandbox Code Playgroud)

.net c# sha256 jwt owin

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

.net ×1

c# ×1

jwt ×1

owin ×1

sha256 ×1