Guest User

Untitled

a guest
May 7th, 2022
291
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.04 KB | None | 0 0
  1. public async Task<TokenResponse> GenerateAsync(Client client, TokenRequest tokenRequest, string issuer, string audience)
  2.         {
  3.             var ed25519pkcs8 = await File.ReadAllTextAsync("private.pem");
  4.  
  5.             var privatePemReader = new PemReader(new StringReader(ed25519pkcs8));
  6.             var ed25519pkcs8Parameters = (Ed25519PrivateKeyParameters)privatePemReader.ReadObject();
  7.             ISigner signer = new Ed25519Signer();
  8.             signer.Init(true, ed25519pkcs8Parameters);
  9.  
  10.             var pasetoToken = new PasetoBuilder()
  11.                 .Use(ProtocolVersion.V4, Purpose.Public)
  12.                 .WithSecretKey(signer.GenerateSignature())
  13.                 .Issuer(issuer)
  14.                 .Subject(tokenRequest.ClientId)
  15.                 .Audience(audience)
  16.                 .NotBefore(DateTime.UtcNow)
  17.                 .IssuedAt(DateTime.UtcNow)
  18.                 .Expiration(DateTime.UtcNow.AddSeconds(client.AccessTokenLifetime))
  19.                 .TokenIdentifier(Guid.NewGuid().ToString())
  20.                 .AddClaim("client_id", tokenRequest.ClientId)
  21.                 .AddClaim("scopes", tokenRequest.Scopes)
  22.                 .Encode();
  23.  
  24.             return new TokenResponse
  25.             {
  26.                 AccessToken = pasetoToken,
  27.                 Lifetime = client.AccessTokenLifetime,
  28.                 Scope = tokenRequest.Scopes
  29.             };
  30.         }
  31.  
  32. // and test controller for verifying
  33.         // test
  34.         [HttpGet]
  35.         public IActionResult DecodePaseto([FromQuery] string token)
  36.         {
  37.             var ed25519x509 = System.IO.File.ReadAllText("public.pem");
  38.  
  39.             var publicPemReader = new PemReader(new StringReader(ed25519x509));
  40.             var ed25519x509Parameters = (Ed25519PublicKeyParameters)publicPemReader.ReadObject();
  41.  
  42.             var paseto = new PasetoBuilder()
  43.                 .Use(ProtocolVersion.V4, Purpose.Public)
  44.                 .WithPublicKey(ed25519x509Parameters.GetEncoded())
  45.                 .Decode(token);
  46.  
  47.             return Ok(JsonConvert.SerializeObject(paseto));
  48.         }
Advertisement
Add Comment
Please, Sign In to add comment