zoukankan      html  css  js  c++  java
  • jwt-dotnet使用示例

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using JWT;
    using JWT.Algorithms;
    using JWT.Serializers;
    
    namespace JWTConsole
    {
        class Program
        {
            static void Main(string[] args)
            {
                var payload = new Dictionary<string, object>{
                    { "claim1", 0 },
                    { "claim2", "claim2-value" }
                };
                var secret = "GQDstcKsx0NHjPOuXOYg5MbeJ1XT0uFiwDVvVBrk";
    
                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);
                Console.WriteLine(token);
    
                IDateTimeProvider provider = new UtcDateTimeProvider();
                IJwtValidator validator = new JwtValidator(serializer, provider);
                IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
                try
                {
                    //IDateTimeProvider provider = new UtcDateTimeProvider();
                    //IJwtValidator validator = new JwtValidator(serializer, provider);
                    //IJwtDecoder decoder = new JwtDecoder(serializer, validator, urlEncoder);
    
                    var json = decoder.Decode(token, secret, verify: true);
                    Console.WriteLine(json);
                }
                catch (TokenExpiredException)
                {
                    Console.WriteLine("Token has expired");
                }
                catch (SignatureVerificationException)
                {
                    Console.WriteLine("Token has invalid signature");
                }
    
    
    
                var now = provider.GetNow().AddMinutes(1);
    
                var unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // or use JwtValidator.UnixEpoch
                var secondsSinceEpoch = Math.Round((now - unixEpoch).TotalSeconds);
    
                payload = new Dictionary<string, object>{
                        { "exp", secondsSinceEpoch }
                };
                token = encoder.Encode(payload, secret);
                var json0 = decoder.Decode(token, secret,verify: true); // TokenExpiredException
                Console.WriteLine(json0);
    
            }
        }
    }

    https://github.com/jwt-dotnet/jwt

  • 相关阅读:
    cache buffers chains ,buffer busy waits
    关于I/O的一些脚本
    模拟buffer busy waits等待事件
    找出热点块所属的用户,对象名,类型
    找到引起磁盘排序的SQL
    db file parallel write,write complete waits
    free buffer waits
    检查日志文件是否传输到备用数据库
    模拟direct path read 等待事件
    3系统启动后的 wifi 加载过程
  • 原文地址:https://www.cnblogs.com/OnlyDreams/p/7569759.html
Copyright © 2011-2022 走看看