【问题标题】:How to decode a JWT using C# JWT Package with Signing Certificate如何使用带有签名证书的 C# JWT 包解码 JWT
【发布时间】:2017-03-06 17:32:42
【问题描述】:

我正在调用 ADFS 以使用 OAuth 授权代码授予获取访问令牌。 我正在表单中获取访问令牌

{"access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dC...."
 "token_type":"bearer",
 "expires":3600}

现在,我正在复制 access_token 值并将其粘贴到 https://jwt.io 它可以完美解码,但签名无效。

Jwt.io 的 Header 返回:

{
"typ": "JWT",
"alg": "RS256",
"x5t": "eQKi04zWoOV3eLmNNBrI2_rbqSY"
}

我的 pem 令牌签名证书如下所示:

-----BEGIN CERTIFICATE-----
MIIG0zCCBbugAwIBAgIKUJvNQgAAAAANxTA...
BgNVBAcTBEtlbnQxJjAkBgNVBAoTHVR...
-----END CERTIFICATE-----

现在,如何使用 System.IdentityModel.Tokens.Jwt 或任何其他方法通过证书验证令牌。

请帮忙。

【问题讨论】:

    标签: c# oauth jwt adfs3.0


    【解决方案1】:

    经过大量研究,我找到了答案。将其发布在这里,以便对其他人有所帮助。

      string token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1.."
      var tokenHandler = new JwtSecurityTokenHandler();
    //Read Token for Getting the User Details
      var parsedJwt = tokenHandler.ReadToken(token) as JwtSecurityToken; 
    
    //Create A Certificate Object that will read the .CER/.PEM/.CRT file as String
     X509Certificate2 clientCertificate = new X509Certificate2(Encoding.UTF8.GetBytes(CertficationString));
    
     var certToken = new X509SecurityToken(clientCertificate);
    
     var validationParameters = new TokenValidationParameters()
        {   
            IssuerSigningToken = certToken,
            ValidAudience = audience,
            ValidIssuer = issuer,
            ValidateLifetime = true,
            ValidateAudience = true,
            ValidateIssuer = true,
            ValidateIssuerSigningKey = true
        };
    
    
        try
        {
           SecurityToken validatedToken;
           var principal = tokenHandler.ValidateToken(token, validationParameters, out validatedToken);
    
        }
        catch (Exception err)
        {
    
            Console.WriteLine("{0}\n {1}", err.Message, err.StackTrace);
        }
    

    【讨论】:

      猜你喜欢
      • 2022-10-31
      • 2017-02-08
      • 2016-07-10
      • 2017-12-24
      • 2018-09-16
      • 2019-04-12
      • 2020-12-15
      • 2015-11-23
      • 2018-03-19
      相关资源
      最近更新 更多