Sha256: 0c033dfb3572d90e5a8f51c6e8b7b5eec8d1236593fc6e8858e483c16c917dae

Contents?: true

Size: 950 Bytes

Versions: 2

Compression:

Stored size: 950 Bytes

Contents

# frozen_string_literal: true

require "jwt"
require "securerandom"

module Hotsock
  class Issuer
    def initialize(config)
      @config = config
    end

    def issue_token(claims = {})
      headers = {typ: "JWT"}
      if @config.issuer_key_id
        headers[:kid] = @config.issuer_key_id
      end

      payload = {}
      now_i = Time.now.to_i
      if @config.issuer_aud_claim
        payload[:aud] = @config.issuer_aud_claim
      end
      if @config.issuer_iat_claim == true
        payload[:iat] = now_i
      end
      if @config.issuer_iss_claim
        payload[:iss] = @config.issuer_iss_claim
      end
      if @config.issuer_jti_claim == true
        payload[:jti] = SecureRandom.uuid
      end
      if @config.issuer_token_ttl.to_i > 0
        payload[:exp] = now_i + @config.issuer_token_ttl.to_i
      end

      JWT.encode(payload.merge(claims), @config.issuer_key, @config.issuer_key_algorithm, headers)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hotsock-1.0.1 lib/hotsock/issuer.rb
hotsock-1.0.0 lib/hotsock/issuer.rb