Class: Nonnative::JwtToken
- Inherits:
-
Object
- Object
- Nonnative::JwtToken
- Defined in:
- lib/nonnative/jwt_token.rb
Overview
Generates Ed25519 (EdDSA) JWT tokens for authenticating against services under test.
The key id is set in the JWT kid header, and the claims match the common
iss/aud/sub/iat/nbf/exp/jti set expected by verifiers such as go-service.
Instance Method Summary collapse
-
#generate(aud:, sub:) ⇒ String
Generates a signed EdDSA JWT.
-
#initialize(issuer:, key:, private_key:, expiration:) ⇒ JwtToken
constructor
A new instance of JwtToken.
Constructor Details
#initialize(issuer:, key:, private_key:, expiration:) ⇒ JwtToken
Returns a new instance of JwtToken.
19 20 21 22 23 24 |
# File 'lib/nonnative/jwt_token.rb', line 19 def initialize(issuer:, key:, private_key:, expiration:) @issuer = issuer @key = key @ed25519 = Nonnative::Ed25519Key.new(private_key) @expiration = expiration end |
Instance Method Details
#generate(aud:, sub:) ⇒ String
Generates a signed EdDSA JWT.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/nonnative/jwt_token.rb', line 31 def generate(aud:, sub:) now = Time.now.to_i payload = { iss: @issuer, aud: aud, sub: sub, iat: now, nbf: now, exp: now + @expiration, jti: SecureRandom.uuid } JWT.encode(payload, Ed25519::SigningKey.new(@ed25519.seed), 'EdDSA', { kid: @key }) end |