代码之家  ›  专栏  ›  技术社区  ›  user856232

正在转换节点。js Jwt示例至。网

  •  1
  • user856232  · 技术社区  · 6 年前

    我正在尝试使用web api。他们要求我使用Jwt令牌。我正在尝试在asp中执行此操作。azure上的net 4.5.2 web app。我已经下载了Microsoft。标识模型。Tokens Nuget包,并希望使用它生成所需的令牌。

    我尝试使用的web api在node中有一个示例。js介绍如何生成正确的令牌。以下是他们的例子:

    var jwt = require('jsonwebtoken');
    
    var payload = {
        iss: api_key,
        exp: ((new Date()).getTime() + 5000)
    };
    
    //Automatically creates header, and returns JWT
    var token = jwt.sign(payload, api_secret);
    

    nuget包的所有示例都比节点中显示的要多很多。js示例。比如创建秘密值、声明身份、签署凭据以及其他各种东西。

    我有api\u key值和api\u secret值。有人能告诉我如何使用nuget包做与使用node显示的相同的事情吗。js?

    1 回复  |  直到 6 年前
        1
  •  0
  •   jostrander    6 年前

    在做了一些研究之后,我想我有了一个解决方案。不幸的是,这是c语言中得到的最简单的解决方案,但考虑到我们谈论的是苹果和桔子,我认为这是一个可以接受的解决方案。看起来C#对选项的详细程度是它的两倍,并且没有任何合理的默认值。

    using System;
    using System.IdentityModel.Tokens.Jwt;
    using Microsoft.IdentityModel.Tokens;
    
    
    namespace stackoverflow
    {
        class Program
        {
            static void Main(string[] args)
            {
                String api_key = "apiKey123123";
                String api_secret = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1";
    
                var signingKey = Convert.FromBase64String(api_secret);
    
                JwtHeader jwtHeader = new JwtHeader(
                   new SigningCredentials(
                       new SymmetricSecurityKey(signingKey),
                       SecurityAlgorithms.HmacSha256Signature
                   )
                );
    
                JwtPayload jwtPayload = new JwtPayload {
                    {"iss", api_key},
                    {"exp", ((DateTimeOffset)DateTime.UtcNow).AddMilliseconds(5000).ToUnixTimeMilliseconds() }
                };
    
                var jwt = new JwtSecurityToken(jwtHeader, jwtPayload);
                var jwtHandler = new JwtSecurityTokenHandler();
                Console.Write(jwtHandler.WriteToken(jwt));
    
                Console.ReadLine();
            }
        }
    }
    

    仅导入此包:

    <PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.2.1" />