Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public async Task<TokenResponse> GenerateAsync(Client client, TokenRequest tokenRequest, string issuer, string audience)
- {
- var ed25519pkcs8 = await File.ReadAllTextAsync("private.pem");
- var privatePemReader = new PemReader(new StringReader(ed25519pkcs8));
- var ed25519pkcs8Parameters = (Ed25519PrivateKeyParameters)privatePemReader.ReadObject();
- ISigner signer = new Ed25519Signer();
- signer.Init(true, ed25519pkcs8Parameters);
- var pasetoToken = new PasetoBuilder()
- .Use(ProtocolVersion.V4, Purpose.Public)
- .WithSecretKey(signer.GenerateSignature())
- .Issuer(issuer)
- .Subject(tokenRequest.ClientId)
- .Audience(audience)
- .NotBefore(DateTime.UtcNow)
- .IssuedAt(DateTime.UtcNow)
- .Expiration(DateTime.UtcNow.AddSeconds(client.AccessTokenLifetime))
- .TokenIdentifier(Guid.NewGuid().ToString())
- .AddClaim("client_id", tokenRequest.ClientId)
- .AddClaim("scopes", tokenRequest.Scopes)
- .Encode();
- return new TokenResponse
- {
- AccessToken = pasetoToken,
- Lifetime = client.AccessTokenLifetime,
- Scope = tokenRequest.Scopes
- };
- }
- // and test controller for verifying
- // test
- [HttpGet]
- public IActionResult DecodePaseto([FromQuery] string token)
- {
- var ed25519x509 = System.IO.File.ReadAllText("public.pem");
- var publicPemReader = new PemReader(new StringReader(ed25519x509));
- var ed25519x509Parameters = (Ed25519PublicKeyParameters)publicPemReader.ReadObject();
- var paseto = new PasetoBuilder()
- .Use(ProtocolVersion.V4, Purpose.Public)
- .WithPublicKey(ed25519x509Parameters.GetEncoded())
- .Decode(token);
- return Ok(JsonConvert.SerializeObject(paseto));
- }
Advertisement
Add Comment
Please, Sign In to add comment